home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 12 / Cream of the Crop 12 (Part II) / Cream of the Crop 12 (Part II).iso / OS2 / VD08DOC1.ZIP / usr / lib / book / referenc.inf (.txt) < prev    next >
Encoding:
OS/2 Help File  |  1996-02-13  |  349.7 KB  |  10,114 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Abstract ΓòÉΓòÉΓòÉ
  3.  
  4. This manual is a reference manual for the Objective C class library for OS/2 PM 
  5. and database programming. 
  6.  
  7. Here all necessary information concerning the classes provided by the library 
  8. can be found. 
  9.  
  10. If you are searching for specific information concerning 
  11.  
  12.      Installation ... Read the Installation Manual. 
  13.      Basics of Application development ... Read the appropriate sections in 
  14.       the Tutorial. There you can find a gentle introduction into using this 
  15.       library package for developing OS/2 PM applications. 
  16.      Classes and Methods provided by the library ... You can find special 
  17.       information about the provided classes and methods in this manual, the 
  18.       Reference Manual. 
  19.      The Database Builder Utility ... Read the appropriate sections in the 
  20.       Application Programming Tools Manual. 
  21.      Literature ... Look in the Literature section of this Manual. 
  22.  
  23.  
  24. ΓòÉΓòÉΓòÉ 2. Introduction ΓòÉΓòÉΓòÉ
  25.  
  26. This document is the Reference Manual for the OS/2 Objective C libraries. It 
  27. provides a description of all classes and protocols defined by the class 
  28. libraries "objcutil.h", "objcpm.a" and "objcdb.a" along with the instance 
  29. variables and methods. 
  30.  
  31. The manual is organized in three parts; the first part will introduce the 
  32. classes forming the utility library. The second part starting at Page part:pm 
  33. is merely a description of the classes and protocols of the library designed 
  34. for creating Presentation Manager programs. The last part on Page part:db will 
  35. focus on the classes and protocols being part of the database library. 
  36.  
  37. Every part is structured alike. The first chapter of the part will be an 
  38. overview of the classes and protocols organized just alike Objective C 
  39. interface declarations of classes. Readers already familiar with the library 
  40. package and the Objective C language will find most information which is needed 
  41. there. In most cases, the name of a single method and a specification of the 
  42. parameters will be enough for using it. 
  43.  
  44.  
  45. ΓòÉΓòÉΓòÉ 2.1. Extending Library Classes ΓòÉΓòÉΓòÉ
  46.  
  47. One of the greatest benefits of the Objective C language is its totally dynamic 
  48. run-time library. It is even possible to extend already existing classes 
  49. without the need of subclassing. 
  50.  
  51. To familiarize the reader with the concept of categories a simple example will 
  52. be presented here. 
  53.  
  54. Having a look at the Printer class provided by the Presentation Manager library 
  55. you will notice that not many functions needed for drawing purposes have been 
  56. implemented. 
  57.  
  58. Some of the methods for printing text and drawing lines will refer to the 
  59. current cursor position in the OS/2 presentation space used for the printer 
  60. page, but there is not even a single method available to set the current 
  61. position. Assume, you would like to extend the Printer class by adding a 
  62. -moveTo:: method taking two parameters, the x and the y coordinate of the point 
  63. which is to be the current position. The implementation would be really simple, 
  64. and because using Objective C extending the class itself is also possible. 
  65.  
  66. For this purpose, you must create a so-called category for the Printer class. 
  67. Categories are used to add new methods to an already existing class without 
  68. having access to the source code. The category then is linked to the executable 
  69. file and from then on the new methods are known by the class. 
  70.  
  71. The implementation for the category Move for the Printer class is implemented 
  72. just alike any other class. The only difference is that you are not allowed to 
  73. define new instance variables in the interface files and overriding methods is 
  74. not possible. The interface declaration stored in the file "Move.h" will be 
  75.  
  76.  
  77. @interface Printer (Move)
  78.  
  79. -moveTo: (LONG) x : (LONG) y;
  80.  
  81. @end
  82.  
  83. while the simple implementation will be stored in "Move.m" 
  84.  
  85.  
  86. #include Move.h
  87.  
  88. @implementation Printer (Move)
  89.  
  90. -moveTo: (LONG) x : (LONG) y
  91. {
  92. POINTL point;
  93.  
  94. point.x = x;
  95. point.y = y;
  96.  
  97. GpiMove (hps,&point);
  98.  
  99. return self;
  100. }
  101.  
  102. @end
  103.  
  104. If you want to use this extended Printer class, simply compile "Move.m" and 
  105. link the object file to your application. The Objective C run-time library will 
  106. take care of adding the new method to the Printer class. From then on, every 
  107. instance of Printer can respond to -moveTo::. 
  108.  
  109. This simple example was just made to demonstrate the power of the Objective C 
  110. run-time library. For more information see the Literature section in the 
  111. Tutorial document. 
  112.  
  113.  
  114. ΓòÉΓòÉΓòÉ 2.2. Some Notes on the Class Reference ΓòÉΓòÉΓòÉ
  115.  
  116. If you have a look at the header files installed together with the libraries 
  117. you will notice that there are some classes defined by the libraries not listed 
  118. in this manual. Additionally, not all methods and instance variables are 
  119. documented. 
  120.  
  121. The classes not documented in this manual are used internally by the library! 
  122. You should never use instances of these classes in your applications. Some 
  123. other classes like BTree for example are not tested and will not work as 
  124. expected. Do not use them! 
  125.  
  126. The instance methods which are not described here are internal methods only 
  127. called by the classes' public methods. The same applies to undocumented 
  128. instance variables. The behaviour of your programs is not predictable if you 
  129. decide to use some of these methods or variables incorrectly. Simply don't even 
  130. think of using them, even if it seems clear what function they will perform. 
  131. The undocumented methods and instance variables are subject to change in future 
  132. versions. Most of the other methods and instance variables will keep the same 
  133. in the future. 
  134.  
  135.  
  136. ΓòÉΓòÉΓòÉ 3. General Utility Classes ΓòÉΓòÉΓòÉ
  137.  
  138.  
  139. ΓòÉΓòÉΓòÉ 4. General Utility Class Library---Overview ΓòÉΓòÉΓòÉ
  140.  
  141. In this part of the manual the General Utility class library will be described. 
  142. Starting with an overview of the classes and protocols in this chapter the 
  143. classes themselves will be described in the next chapter. 
  144.  
  145.  
  146.  
  147. Inheritance hierarchy in General Utility Class library
  148.  
  149. Figure * shows all classes implemented in the General Utility Class library and 
  150. their inheritence hierarchy. 
  151.  
  152. In the beginning you will be shown an alphabetically listed overview of all 
  153. classes and protocols with their instance variables and all supported methods. 
  154. This was written in the style of an Objective C Interface declaration. 
  155.  
  156.  
  157. ΓòÉΓòÉΓòÉ 4.1. Class "File" ΓòÉΓòÉΓòÉ
  158.  
  159. @interface File : Object
  160. {
  161. FILE *handle;
  162. char *fileName;
  163. long recordSize;
  164. long recordCount;
  165. long currentRecord;
  166. }
  167.  
  168. -init;
  169. -initForReading: (char *) string recordSize: (long) aRecSize;
  170. -initForWriting: (char *) string recordSize: (long) aRecSize;
  171. -createForWriting: (char *) string recordSize: (long) aRecSize;
  172.  
  173. -free;
  174.  
  175. -(char *) fileName;
  176. -(long) recordSize;
  177. -(long) recordCount;
  178. -(long) currentRecord;
  179. -setFileName: (char *) string;
  180. -setRecordSize: (long) size;
  181.  
  182. -(long) append: (void *) record;
  183. -(void *) fetch: (void *) record;
  184. -(void *) fetch: (void *) record index: (long) index;
  185. -(void *) first: (void *) record;
  186. -(void *) next: (void *) record;
  187. -(long) replace: (void *) record;
  188. -(long) replace: (void *) record index: (long) index;
  189.  
  190. @end
  191.  
  192.  
  193. ΓòÉΓòÉΓòÉ 4.2. Class "KeyedList" ΓòÉΓòÉΓòÉ
  194.  
  195. @interface KeyedList : SimpleList
  196. {
  197. id *key;
  198. }
  199.  
  200. -initCount: (unsigned long) aCount;
  201.  
  202. -free;
  203. -freeObjects;
  204.  
  205. -addObject: anObject;
  206. -addObject: anObject withKey: aKey;
  207. -insertObject: anObject at: (unsigned long) position;
  208. -insertObject: anObject withKey: aKey at: (unsigned long) position;
  209. -lastKey;
  210. -keyAt: (unsigned long) position;
  211. -removeObjectAt: (unsigned long) position;
  212. -replaceKeyAt: (unsigned long) position with: aKey;
  213. -objectForKey: aKey;
  214. -(unsigned long) indexForKey: aKey;
  215.  
  216. @end
  217.  
  218.  
  219. ΓòÉΓòÉΓòÉ 4.3. Class "NamedPipe" ΓòÉΓòÉΓòÉ
  220.  
  221. @interface NamedPipe : Object
  222. {
  223. HPIPE handle;
  224. char *pipeName;
  225. unsigned long openMode;
  226. unsigned long pipeMode;
  227. unsigned long bufferSize;
  228. }
  229.  
  230. -init;
  231. -create;
  232. -open;
  233.  
  234. -free;
  235.  
  236. -setPipeName: (char *) aName;
  237. -(char *) pipeName;
  238. -setOpenMode: (unsigned long) aMode;
  239. -setPipeMode: (unsigned long) aMode;
  240. -setBufferSize: (unsigned long) aSize;
  241.  
  242. -writeBlock: (void *) block size: (unsigned long) aSize;
  243. -writeString: (char *) aString;
  244. -readBlock: (void *) block size: (unsigned long) aSize;
  245.  
  246. @end
  247.  
  248.  
  249. ΓòÉΓòÉΓòÉ 4.4. Class "SimpleList" ΓòÉΓòÉΓòÉ
  250.  
  251. @interface SimpleList : Object
  252. {
  253. id *data;
  254.  
  255. unsigned long count;
  256. unsigned long maxCount;
  257.  
  258. unsigned long slots;
  259. }
  260.  
  261. -init;
  262. -initCount: (unsigned long) aCount;
  263.  
  264. -free;
  265. -freeObjects;
  266.  
  267. -(unsigned long) count;
  268.  
  269. -addObject: anObject;
  270. -appendList: (SimpleList *) otherList;
  271. -empty;
  272. -insertObject: anObject at: (unsigned long) position;
  273. -lastObject;
  274. -objectAt: (unsigned long) position;
  275. -(unsigned long) indexOf: anObject;
  276. -removeLastObject;
  277. -removeObjectAt: (unsigned long) position;
  278. -replaceObjectAt: (unsigned long) position with: anObject;
  279.  
  280. @end
  281.  
  282.  
  283. ΓòÉΓòÉΓòÉ 4.5. Class "String" ΓòÉΓòÉΓòÉ
  284.  
  285. @interface String : Object
  286. {
  287. char *stringValue;
  288. }
  289.  
  290. -init;
  291.  
  292. -free;
  293.  
  294. -(char *) stringValue;
  295. -setStringValue: (char *) aValue;
  296.  
  297. -(BOOL) isEqual: anObject;
  298. -(int) compare: anotherObject;
  299.  
  300. @end
  301.  
  302.  
  303. ΓòÉΓòÉΓòÉ 5. General Utility Class Library---Classes ΓòÉΓòÉΓòÉ
  304.  
  305. This chapter describes all variables and methods of the classes implemented in 
  306. the General Utility Class library. 
  307.  
  308. The description consists of three to six parts: 
  309.  
  310.    1. The name of the class and the precessing inheritance hierarchy 
  311.    2. A list of protocols the class adopts. The methods defined in the formal 
  312.       protocols are not described here. See the protocols' descriptions for 
  313.       more information. 
  314.    3. A short description of the class and its proposed usage 
  315.    4. A list of all instance variables and their use 
  316.    5. All newly implemented class and instance methods and their description 
  317.    6. Methods of a delegate object---if such methods are supported---which get 
  318.       called at certain times 
  319.  
  320.  The list of instance variables is omitted if there are none of them defined 
  321.  but those inherited from the superclass. 
  322.  
  323.  If no return type of some method is specified, the return type defaults to id, 
  324.  a generic pointer to an Objective C object. 
  325.  
  326.  Methods returning an id value normally return self, which is a pointer to the 
  327.  object itself on successful completion, nil otherwise. 
  328.  
  329.  All methods having just one parameter called sender can be used as targets for 
  330.  command/action bindings. If not stated otherwise, sender is ignored. Normally, 
  331.  this parameter should be a pointer to the sending object which can be obtained 
  332.  by self. 
  333.  
  334.  
  335. ΓòÉΓòÉΓòÉ 6. File ΓòÉΓòÉΓòÉ
  336.  
  337. Inherits from: Object 
  338.  
  339. Class description: 
  340.  
  341. This class is a first attempt to encapsulate some of the C library's 
  342. input/output functions. File can be used whenever record oriented access to a 
  343. file located somewhere on a diskette or hard drive is needed. 
  344.  
  345. Record oriented in this case implies that you can use instances of this class 
  346. to store (binary) data of a fixed length. Access methods are provided. 
  347.  
  348. At the moment the file format is just a flat file without any sorting or 
  349. searching capabilibies. 
  350.  
  351.  
  352. ΓòÉΓòÉΓòÉ 6.1. Instance Variables ΓòÉΓòÉΓòÉ
  353.  
  354.  
  355. ΓòÉΓòÉΓòÉ 6.1.1. FILE *handle ΓòÉΓòÉΓòÉ
  356.  
  357. handle is used to store the file handle of the file as opened using the C 
  358. library's fopen() function. If you create subclasses of File, your methods can 
  359. use this variable to access the file structure e.g. using fseek(), fread() or 
  360. fwrite(). 
  361.  
  362.  
  363. ΓòÉΓòÉΓòÉ 6.1.2. char *fileName ΓòÉΓòÉΓòÉ
  364.  
  365. In this instance variable a pointer to a NULL-terminated C string representing 
  366. the name of the physical file you want to access. The memory block occupied by 
  367. the file name is part of the object's private data section and gets freed 
  368. automatically when the object is disposed. 
  369.  
  370. Use -setFileName: and -fileName for access to this data. 
  371.  
  372.  
  373. ΓòÉΓòÉΓòÉ 6.1.3. longrecordSize ΓòÉΓòÉΓòÉ
  374.  
  375. As instances of File should only be used for storing various records of a fixed 
  376. length, this instance variable is used to store the size of the records. 
  377.  
  378. Access to this variable is provided via setRecordSize: and -recordSize. 
  379.  
  380. This variable must reflect the record size of the records to be stored in the 
  381. physical file on disk. 
  382.  
  383.  
  384. ΓòÉΓòÉΓòÉ 6.1.4. longrecordCount ΓòÉΓòÉΓòÉ
  385.  
  386. This variable holds the total number of records already stored in the file. 
  387. Read-only access is provided by the instance method -recordCount. 
  388.  
  389.  
  390. ΓòÉΓòÉΓòÉ 6.1.5. longcurrentRecord ΓòÉΓòÉΓòÉ
  391.  
  392. Internally File objects will always read, write or modify a single record. The 
  393. number of the current record is stored in currenRecord and can be accessed 
  394. using -currentRecord. 
  395.  
  396.  
  397. ΓòÉΓòÉΓòÉ 6.2. Methods ΓòÉΓòÉΓòÉ
  398.  
  399.  
  400. ΓòÉΓòÉΓòÉ 6.2.1. init ΓòÉΓòÉΓòÉ
  401.  
  402. -init
  403.  
  404. This initializer method initializes the instance variables with default values. 
  405. It should only be called by other initializer methods, as -initForReading: 
  406. recordSize:, -initForWriting: recordSize: and -createForWriting: recordSize:. 
  407.  
  408.  
  409. ΓòÉΓòÉΓòÉ 6.2.2. initForReading: recordSize: ΓòÉΓòÉΓòÉ
  410.  
  411. -initForReading: (char *) string recordSize: (long)aRecSize
  412.  
  413. -initForReading: recordSize: is one of the three "end-user" initializer methods 
  414. provided by File. Using this one will try to open the file string for read-only 
  415. access. The records are assumed to have a size of aRecSize bytes each. 
  416.  
  417. The file must already exist, otherwise no instance of File will be created and 
  418. nil is returned. 
  419.  
  420.  
  421. ΓòÉΓòÉΓòÉ 6.2.3. initForWriting: recordSize: ΓòÉΓòÉΓòÉ
  422.  
  423. -initForWriting: (char *) string recordSize: (long)aRecSize
  424.  
  425. To open an already existing file string for read and write access, use this 
  426. method. As before, a pointer to the file object is returned on success, 
  427. otherwise nil is returned and the object is freed. 
  428.  
  429.  
  430. ΓòÉΓòÉΓòÉ 6.2.4. createForWriting: recordSize: ΓòÉΓòÉΓòÉ
  431.  
  432. -createForWriting: (char *) string recordSize: (long)aRecSize
  433.  
  434. If you want to create a new file for reading and writing records from/to it, 
  435. you must use -createForWriting: recordSize:. The file string will be created if 
  436. possible and the record size is set to aRecSize. 
  437.  
  438. On error the object is freed and nil is returned. 
  439.  
  440.  
  441. ΓòÉΓòÉΓòÉ 6.2.5. free ΓòÉΓòÉΓòÉ
  442.  
  443. -free
  444.  
  445. -free will dispose all memory blocks allocted by the object and close the file. 
  446. Immediately afterwards the object itself is freed. 
  447.  
  448.  
  449. ΓòÉΓòÉΓòÉ 6.2.6. fileName ΓòÉΓòÉΓòÉ
  450.  
  451. -(char *) fileName
  452.  
  453. This method returns a pointer to the internal storage area holding the name of 
  454. the physical disk file. 
  455.  
  456. Never modify the data this method returns! To change the file's name use 
  457. -setFileName:. 
  458.  
  459.  
  460. ΓòÉΓòÉΓòÉ 6.2.7. recordSize ΓòÉΓòÉΓòÉ
  461.  
  462. -(long) recordSize
  463.  
  464. -recordSize returns the size of the records the file stores in bytes. 
  465.  
  466.  
  467. ΓòÉΓòÉΓòÉ 6.2.8. recordCount ΓòÉΓòÉΓòÉ
  468.  
  469. -(long) recordCount
  470.  
  471. This method returns the total number of records stored in the file. The result 
  472. will only be valid if the same record size was specified when opening the file 
  473. as ever before for the same physical file. 
  474.  
  475.  
  476. ΓòÉΓòÉΓòÉ 6.2.9. currentRecord ΓòÉΓòÉΓòÉ
  477.  
  478. -(long) currentRecord
  479.  
  480. As was mentioned previously, instances of File always will handle only a single 
  481. record at once. This record is called the current record. The number of the 
  482. current record---its index ranges from 0 to recordCount - 1---can be queried 
  483. using -currentRecord. 
  484.  
  485.  
  486. ΓòÉΓòÉΓòÉ 6.2.10. setFileName: ΓòÉΓòÉΓòÉ
  487.  
  488. -setFileName: (char *) string
  489.  
  490. This method is used to change the object's instance variable storing the 
  491. physical file name. Only using this method to do this guarantees that the 
  492. object keeps its internal state consistent. 
  493.  
  494. Do not expect the name of the physical file on disk to be changed when using 
  495. this method. Setting a new file name does not have any effect on the physical 
  496. file itself. 
  497.  
  498.  
  499. ΓòÉΓòÉΓòÉ 6.2.11. setRecordSize: ΓòÉΓòÉΓòÉ
  500.  
  501. -setRecordSize: (long) size
  502.  
  503. To modify the instance variable recordSize use -setRecordSize:. The (constant) 
  504. size of the records stored in the file is set to size. Modifying this value 
  505. will have effect on any of the methods providing access to the single records 
  506. themselves, e.g. fetch: or append:. 
  507.  
  508.  
  509. ΓòÉΓòÉΓòÉ 6.2.12. append: ΓòÉΓòÉΓòÉ
  510.  
  511. -(long) append: (void *) record
  512.  
  513. -append: is used to add a new record to the file. The record is appended to the 
  514. file. The data to be stored is taken from the memory block pointed to by 
  515. record. Exactly recordSize bytes are stored in the physical file. 
  516.  
  517. This method returns the record index of the newly appended record. 
  518.  
  519.  
  520. ΓòÉΓòÉΓòÉ 6.2.13. fetch: ΓòÉΓòÉΓòÉ
  521.  
  522. -(void *) fetch: (void *) record
  523.  
  524. To fetch the current record into the buffer area pointed to by record, use 
  525. -fetch:. If record is NULL, a memory block of size recordSize will be allocated 
  526. automatically using malloc(). 
  527.  
  528. This method returns a pointer to the memory block the record was stored in. 
  529. Your application will be responsible for freeing the memory eventually 
  530. allocated by this method after it is not needed any more. 
  531.  
  532.  
  533. ΓòÉΓòÉΓòÉ 6.2.14. fetch: index: ΓòÉΓòÉΓòÉ
  534.  
  535. -(void *) fetch: (void *) record index: (long)index
  536.  
  537. To fetch a record specified by its record index index, use this method. As with 
  538. -fetch: a new memory block is allocated if record is NULL. 
  539.  
  540. This method returns a pointer to the memory block the record is stored in or 
  541. NULL if an invalid record index was specified. 
  542.  
  543.  
  544. ΓòÉΓòÉΓòÉ 6.2.15. first: ΓòÉΓòÉΓòÉ
  545.  
  546. -(void *) first: (void *) record
  547.  
  548. To retrieve the first record---the record having index 0---from the file object 
  549. use this method. 
  550.  
  551. If record is NULL, a new buffer area is allocated. The record buffer is 
  552. returned. 
  553.  
  554. Returns a pointer to the memory area used to store the record in on success, 
  555. NULL, if no records available. 
  556.  
  557.  
  558. ΓòÉΓòÉΓòÉ 6.2.16. next: ΓòÉΓòÉΓòÉ
  559.  
  560. -(void *) next: (void *) record
  561.  
  562. This method will read the next record into record. 
  563.  
  564. On success this method returns a pointer to the record data, of no more records 
  565. do exist in the file, NULL is returned. 
  566.  
  567.  
  568. ΓòÉΓòÉΓòÉ 6.2.17. replace: ΓòÉΓòÉΓòÉ
  569.  
  570. -(long) replace: (void *) record
  571.  
  572. -replace: replaces the data of the current record with the one in the memory 
  573. area pointed to by record. 
  574.  
  575. This method returns the index of the record that was replaced. If currentRecord 
  576. is the same as the number of records currently stored in the file, a new record 
  577. is appended. 
  578.  
  579. On error---if currentRecord is invalid----1 is returned. 
  580.  
  581.  
  582. ΓòÉΓòÉΓòÉ 6.2.18. replace: index: ΓòÉΓòÉΓòÉ
  583.  
  584. -(long) replace: (void *) record index: (long)index
  585.  
  586. To replace the record specified by its index with the data pointed to by record 
  587. use -replace: index:. 
  588.  
  589. This method returns the index of the record that was replaced. If index equals 
  590. currentRecord, a new record is appended to the file. 
  591.  
  592. If index is out of range, i.e. index is less than 0 or greater than 
  593. recordCount, -1 is returned. 
  594.  
  595.  
  596. ΓòÉΓòÉΓòÉ 7. KeyedList ΓòÉΓòÉΓòÉ
  597.  
  598. Inherits from: SimpleList : Object 
  599.  
  600. Class description: 
  601.  
  602. As a subclass of SimpleList instances of this class are used to store a various 
  603. number of Objective C objects. In addition to instances of its superclass 
  604. KeyedList objects will also store a key property together with the objects. 
  605. Using some of the instance methods you can retrieve pointer to the stored 
  606. objects by querying their key value. 
  607.  
  608. The list is not sorted at the moment. Access by searching for the key object is 
  609. not very efficient by now, so take care not to use instances of this class for 
  610. large lists. 
  611.  
  612. As the keys are Objective C objects as well as the "real data" to be stored in 
  613. the list, you can define any object as a key object. Comparison and search is 
  614. performed using the key object's -isEqual: and -compareWith: methods. To store 
  615. objects having a string key, use instances of String for the key objects. 
  616.  
  617.  
  618. ΓòÉΓòÉΓòÉ 7.1. Instance Variables ΓòÉΓòÉΓòÉ
  619.  
  620.  
  621. ΓòÉΓòÉΓòÉ 7.1.1. id *key ΓòÉΓòÉΓòÉ
  622.  
  623. key represents an array of pointers to objects representing the key values of 
  624. the single objects stored in the list. 
  625.  
  626.  
  627. ΓòÉΓòÉΓòÉ 7.2. Methods ΓòÉΓòÉΓòÉ
  628.  
  629.  
  630. ΓòÉΓòÉΓòÉ 7.2.1. initCount: ΓòÉΓòÉΓòÉ
  631.  
  632. -initCount: (unsigned long) aCount
  633.  
  634. -initCount: is the default initializer method---also called automatically by 
  635. the classes' -init method---to initialize a KeyedList object and allocate data 
  636. for the key list. 
  637.  
  638. For efficiency reasons, storage for the objects and the keys is allocated for 
  639. many objects at once; the number of objects the storage is automatically 
  640. increased if needed is specified by the parameter aCount. 
  641.  
  642.  
  643. ΓòÉΓòÉΓòÉ 7.2.2. free ΓòÉΓòÉΓòÉ
  644.  
  645. -free
  646.  
  647. This method frees all memory allocated by this object. The objects and the key 
  648. objects stored in the list are not freed. This is done using -freeObjects 
  649.  
  650.  
  651. ΓòÉΓòÉΓòÉ 7.2.3. freeObjects ΓòÉΓòÉΓòÉ
  652.  
  653. -freeObjects
  654.  
  655. This method frees all objects stored in the list. The list itself isn't freed. 
  656. The keys are freed, too. 
  657.  
  658.  
  659. ΓòÉΓòÉΓòÉ 7.2.4. addObject: ΓòÉΓòÉΓòÉ
  660.  
  661. -addObject: anObject
  662.  
  663. This method appends anObject to the list. The key value for this object is nil. 
  664. The object pointed to by anObject must not be freed while it is stored in the 
  665. list. 
  666.  
  667.  
  668. ΓòÉΓòÉΓòÉ 7.2.5. addObject: withKey: ΓòÉΓòÉΓòÉ
  669.  
  670. -addObject: anObject withKey: aKey
  671.  
  672. This method appends anObject to the list. The key for anObject is aKey. You 
  673. must not free either the key object aKey or the object itself while it is 
  674. stored in the list. 
  675.  
  676.  
  677. ΓòÉΓòÉΓòÉ 7.2.6. insertObject: at: ΓòÉΓòÉΓòÉ
  678.  
  679. -insertObject: anObject at: (unsigned long)position
  680.  
  681. This method inserts anObject into the list at index position. The index of all 
  682. objects starting at position is increased by one. The key for this object is 
  683. nil. 
  684.  
  685. This method returns self on success or nil if the specified index is out of 
  686. range. 
  687.  
  688.  
  689. ΓòÉΓòÉΓòÉ 7.2.7. insertObject: withKey: at: ΓòÉΓòÉΓòÉ
  690.  
  691. -insertObject: anObject withKey: aKey at: (unsignedlong) position
  692.  
  693. This method inserts anObject into the list at index position. The index of all 
  694. objects starting at position is increased by one. The key for this object is 
  695. aKey. 
  696.  
  697. Returns self on success, or nil if position is invalid. 
  698.  
  699.  
  700. ΓòÉΓòÉΓòÉ 7.2.8. lastKey ΓòÉΓòÉΓòÉ
  701.  
  702. -lastKey
  703.  
  704. This method returns the key object associated with the last object in the list. 
  705.  
  706.  
  707. ΓòÉΓòÉΓòÉ 7.2.9. keyAt ΓòÉΓòÉΓòÉ
  708.  
  709. -keyAt: (unsigned long) position
  710.  
  711. The key associated with the object stored at index position is returned. 
  712.  
  713.  
  714. ΓòÉΓòÉΓòÉ 7.2.10. removeObjectAt: ΓòÉΓòÉΓòÉ
  715.  
  716. -removeObjectAt: (unsigned long)position
  717.  
  718. -removeObjectAt: removes the object stored at index position from the list. The 
  719. indices of all objects stored in the list after position are decreased by one. 
  720. On success, the removed object is returned, nil otherwise. 
  721.  
  722. Your application program is responsible for freeing the removed object and its 
  723. associated key object. Use -keyAt: to retrieve a pointer to the object's key 
  724. object before removing it from the list. 
  725.  
  726.  
  727. ΓòÉΓòÉΓòÉ 7.2.11. replaceKeyAt: ΓòÉΓòÉΓòÉ
  728.  
  729. -replaceKeyAt: (unsigned long) position
  730.  
  731. Using this method, the key stored at index position is replaced with aKey. The 
  732. key stored previously is returned. If position is invalid, nil is returned. 
  733.  
  734.  
  735. ΓòÉΓòÉΓòÉ 7.2.12. objectForKey: ΓòÉΓòÉΓòÉ
  736.  
  737. -objectForKey: aKey
  738.  
  739. This method searches for an object associated with aKey. If found, the object 
  740. is returned, nil otherwise. 
  741.  
  742. All comparisons are performed using the key objects' -isEqual: methods. 
  743. Depending on the class-specific implementation this will only work if the 
  744. physically same key object was specified that was on insertion of the object or 
  745. just an object similar to the one (e.g. String's -isEqual: method only checks 
  746. for the string value of the objects to be equivalent.). 
  747.  
  748.  
  749. ΓòÉΓòÉΓòÉ 7.2.13. indexForKey: ΓòÉΓòÉΓòÉ
  750.  
  751. -(unsigned long) indexForKey: aKey
  752.  
  753. This method searches for the first key equal to aKey in the list. The index is 
  754. returned. If no match could be found, INVALID_INDEX is returned. 
  755.  
  756.  
  757. ΓòÉΓòÉΓòÉ 8. NamedPipe ΓòÉΓòÉΓòÉ
  758.  
  759. Inherits from: Object 
  760.  
  761. Class description: 
  762.  
  763. NamedPipe is used to provide a---very simple---interface to one of OS/2's 
  764. inter-process communication facilities called named pipes. 
  765.  
  766. A name pipe is some kind of virtual file, always located in the directory 
  767. \PIPE\, providing two different processes or threads with a way of transfering 
  768. data between them. 
  769.  
  770. At the moment only writing and reading blocks of binary data and writing single 
  771. strings is supported. 
  772.  
  773.  
  774. ΓòÉΓòÉΓòÉ 8.1. Instance Variables ΓòÉΓòÉΓòÉ
  775.  
  776.  
  777. ΓòÉΓòÉΓòÉ 8.1.1. HPIPEhandle ΓòÉΓòÉΓòÉ
  778.  
  779. handle is used to store the named pipe's file handle. It can be used in methods 
  780. you add by writing a category or a subclass to NamedPipe. 
  781.  
  782.  
  783. ΓòÉΓòÉΓòÉ 8.1.2. char *pipeName ΓòÉΓòÉΓòÉ
  784.  
  785. This variable stores the name of the named pipe. It must always start with 
  786. \PIPE\. 
  787.  
  788. Read and write access to this variable is provided by the instance methods 
  789. -pipeName and -setPipeName:. 
  790.  
  791.  
  792. ΓòÉΓòÉΓòÉ 8.1.3. unsigned longopenMode ΓòÉΓòÉΓòÉ
  793.  
  794. A named pipe will be opened just like any other OS/2 file. The variable 
  795. openMode stores the modes used for opening or creating a named pipe. 
  796.  
  797. The flag which can be used are the same as for the third parameter called 
  798. openmode of the API function DosCreateNPipe(). 
  799.  
  800.  
  801. ΓòÉΓòÉΓòÉ 8.1.4. unsigned longpipeMode ΓòÉΓòÉΓòÉ
  802.  
  803. In addition to the mode used for opening the named pipe, an additional pipeMode 
  804. is specified. 
  805.  
  806. The flag which can be used are the same as for the fourth parameter called 
  807. pipemode of the API function DosCreateNPipe(). 
  808.  
  809.  
  810. ΓòÉΓòÉΓòÉ 8.1.5. unsigned longbufferSize ΓòÉΓòÉΓòÉ
  811.  
  812. For performance reasons a named pipe will use a buffer space when transferring 
  813. data. The size of this buffer space is stored in the instance variable 
  814. bufferSize. 
  815.  
  816.  
  817. ΓòÉΓòÉΓòÉ 8.2. Methods ΓòÉΓòÉΓòÉ
  818.  
  819.  
  820. ΓòÉΓòÉΓòÉ 8.2.1. init ΓòÉΓòÉΓòÉ
  821.  
  822. -init
  823.  
  824. -init will initialize the object and its instance variables to default values. 
  825.  
  826. In openMode the flags NP_NOWRITEBEHIND, NP_NOINHERIT and NP_ACCESS_DUPLEX are 
  827. set, by default specifying the pipe to be created and opened for both reading 
  828. and writing data. 
  829.  
  830. pipeMode is specified as a binary or of the flags NP_TYPE_BYTE, 
  831. NP_READMODE_BYTE and NP_UNLIMITED_INSTANCES. 
  832.  
  833. The size of the transfer buffer used by the named pipe is set to 4096. 
  834.  
  835. You must set the name of the pipe using -setPipeName: before calling -create to 
  836. create and open the named pipe or -open to open an already existing pipe. 
  837.  
  838.  
  839. ΓòÉΓòÉΓòÉ 8.2.2. create ΓòÉΓòÉΓòÉ
  840.  
  841. -create
  842.  
  843. This method is used to create the named pipe having the name as set to the 
  844. instance variable pipeName. The pipe must not exist when doing so, otherwise 
  845. nil will be returned. 
  846.  
  847. After creating the named pipe the pipe is opened. 
  848.  
  849.  
  850. ΓòÉΓòÉΓòÉ 8.2.3. open ΓòÉΓòÉΓòÉ
  851.  
  852. -open
  853.  
  854. In contrast to -create the instance method -open is used to connect to (and 
  855. open) an already existing named pipe. On error, nil is returned, self 
  856. otherwise. 
  857.  
  858.  
  859. ΓòÉΓòÉΓòÉ 8.2.4. free ΓòÉΓòÉΓòÉ
  860.  
  861. -free
  862.  
  863. Free will close the named pipe and free the memory allocated by the object. 
  864.  
  865.  
  866. ΓòÉΓòÉΓòÉ 8.2.5. setPipeName: ΓòÉΓòÉΓòÉ
  867.  
  868. -setPipeName: (const char *) aName
  869.  
  870. After calling the initializer method -init but before using either -create to 
  871. create and open a new named pipe or -open to open an already existing pipe, you 
  872. must set the pipes name using this method. aName has to start with \PIPE\ if 
  873. the pipe is to be opened as a pipe on the local machine or with \Server\PIPE\ 
  874. if the pipe is to be opened on the host Server in a local network. 
  875.  
  876. The object will not copy the string to a private memory area but only store a 
  877. pointer to the name as specified in the parameter aName. 
  878.  
  879.  
  880. ΓòÉΓòÉΓòÉ 8.2.6. pipeName ΓòÉΓòÉΓòÉ
  881.  
  882. -(const char *) pipeName
  883.  
  884. pipeName will return the name of the pipe as currently stored in the object. 
  885.  
  886.  
  887. ΓòÉΓòÉΓòÉ 8.2.7. setOpenMode: ΓòÉΓòÉΓòÉ
  888.  
  889. -setOpenMode: (unsigned long) aMode
  890.  
  891. To set the variable openMode to aMode use this method. 
  892.  
  893.  
  894. ΓòÉΓòÉΓòÉ 8.2.8. setPipeMode: ΓòÉΓòÉΓòÉ
  895.  
  896. -setPipeMode: (unsigned long) aMode
  897.  
  898. -setPipeMode: is used to set the instance variable pipeMode to aMode. 
  899.  
  900.  
  901. ΓòÉΓòÉΓòÉ 8.2.9. setBufferSize: ΓòÉΓòÉΓòÉ
  902.  
  903. -setBufferSize: (unsigned long) aSize
  904.  
  905. Before opening or creating a named pipe you can specify a buffer size different 
  906. from the default value of 4096 bytes to be aSize bytes using this method. 
  907.  
  908.  
  909. ΓòÉΓòÉΓòÉ 8.2.10. writeBlock: size: ΓòÉΓòÉΓòÉ
  910.  
  911. -writeBlock: (void *) block size: (unsigned long)aSize
  912.  
  913. -writeBlock: size: will write aSize bytes from the memory area pointed to by 
  914. block to the named pipe. 
  915.  
  916.  
  917. ΓòÉΓòÉΓòÉ 8.2.11. writeString: ΓòÉΓòÉΓòÉ
  918.  
  919. -writeString: (char *) aString
  920.  
  921. This method is used to write a NULL-terminated string aString to the named 
  922. pipe. 
  923.  
  924.  
  925. ΓòÉΓòÉΓòÉ 8.2.12. readBlock: size: ΓòÉΓòÉΓòÉ
  926.  
  927. -readBlock: (void *) block size: (unsigned long)aSize
  928.  
  929. To read in a block of aSize bytes into the buffer area pointed to by block use 
  930. this method. 
  931.  
  932.  
  933. ΓòÉΓòÉΓòÉ 9. SimpleList ΓòÉΓòÉΓòÉ
  934.  
  935. Inherits from: Object 
  936.  
  937. Class description: 
  938.  
  939. This class was created to provide means of storing whole lists of Objective C 
  940. objects. Its interface concerning the instance methods is mostly compatible 
  941. with NEXTSTEP's or the library libobjects' List class. 
  942.  
  943. Instances of SimpleList can store objects of any type. To optimize access to 
  944. the objects stored, arrays are used. When a new memory area has to be allocated 
  945. for adding new objects the object will always allocated enough storage to store 
  946. exactly slots new objects in the list. 
  947.  
  948. Indices of the list items start at 0. 
  949.  
  950.  
  951. ΓòÉΓòÉΓòÉ 9.1. Instance Variables ΓòÉΓòÉΓòÉ
  952.  
  953.  
  954. ΓòÉΓòÉΓòÉ 9.1.1. id *data ΓòÉΓòÉΓòÉ
  955.  
  956. This pointer variable represents an array the objects in the list are stored 
  957. in. 
  958.  
  959.  
  960. ΓòÉΓòÉΓòÉ 9.1.2. unsigned longcount ΓòÉΓòÉΓòÉ
  961.  
  962. The current number of objects stored in the list is stored in this instance 
  963. variable. 
  964.  
  965.  
  966. ΓòÉΓòÉΓòÉ 9.1.3. unsigned longmaxCount ΓòÉΓòÉΓòÉ
  967.  
  968. Because SimpleList objects will always allocate a bulk of memory large enough 
  969. for storing slots new records the number of objects a list can store at most 
  970. will almost always be larger than the number of objects currently stored. Only 
  971. after maxCounts objects are stored in the list and a new object is to be 
  972. appended or inserted a new memory area will be allocated suitable to store 
  973. maxCount + slots objects, which is slots new objects than there are already 
  974. stored in the list. 
  975.  
  976.  
  977. ΓòÉΓòÉΓòÉ 9.1.4. unsigned longslots ΓòÉΓòÉΓòÉ
  978.  
  979. The number of objects the size of the list will be increase on demand is stored 
  980. in slots. 
  981.  
  982.  
  983. ΓòÉΓòÉΓòÉ 9.2. Methods ΓòÉΓòÉΓòÉ
  984.  
  985.  
  986. ΓòÉΓòÉΓòÉ 9.2.1. init ΓòÉΓòÉΓòÉ
  987.  
  988. -init
  989.  
  990. This method initializes the object. slots is set to 5. 
  991.  
  992.  
  993. ΓòÉΓòÉΓòÉ 9.2.2. initCount: ΓòÉΓòÉΓòÉ
  994.  
  995. -initCount: (unsigned long) aCount
  996.  
  997. This method really initializes an instance of SimpleList. data is set to NULL, 
  998. count and maxCount are set to 0, slots is initialized with the method's only 
  999. parameter aCount. 
  1000.  
  1001.  
  1002. ΓòÉΓòÉΓòÉ 9.2.3. free ΓòÉΓòÉΓòÉ
  1003.  
  1004. -free
  1005.  
  1006. This method frees all memory allocated by this object. The objects stored in 
  1007. the list are not freed. 
  1008.  
  1009.  
  1010. ΓòÉΓòÉΓòÉ 9.2.4. freeObjects ΓòÉΓòÉΓòÉ
  1011.  
  1012. -freeObjects
  1013.  
  1014. This method frees all objects stored in the list. The list itself isn't freed. 
  1015.  
  1016.  
  1017. ΓòÉΓòÉΓòÉ 9.2.5. count ΓòÉΓòÉΓòÉ
  1018.  
  1019. -(unsigned long) count
  1020.  
  1021. -count returns the number of objects currently stored in the list. 
  1022.  
  1023.  
  1024. ΓòÉΓòÉΓòÉ 9.2.6. addObject: ΓòÉΓòÉΓòÉ
  1025.  
  1026. -addObject: anObject
  1027.  
  1028. This method appends anObject to the list. 
  1029.  
  1030.  
  1031. ΓòÉΓòÉΓòÉ 9.2.7. apendList: ΓòÉΓòÉΓòÉ
  1032.  
  1033. -appendList: (SimpleList *) otherList
  1034.  
  1035. Append the objects in otherList to this list. 
  1036.  
  1037.  
  1038. ΓòÉΓòÉΓòÉ 9.2.8. empty ΓòÉΓòÉΓòÉ
  1039.  
  1040. -empty
  1041.  
  1042. This method empties the list without freeing the objects. 
  1043.  
  1044.  
  1045. ΓòÉΓòÉΓòÉ 9.2.9. insertObject: at: ΓòÉΓòÉΓòÉ
  1046.  
  1047. -insertObject: anObject at: (unsigned long)position
  1048.  
  1049. This method inserts anObject into the list at index position. The index of all 
  1050. objects starting at position is increased by one. Returns self on success, or 
  1051. nil if position is invalid. 
  1052.  
  1053.  
  1054. ΓòÉΓòÉΓòÉ 9.2.10. lastObject ΓòÉΓòÉΓòÉ
  1055.  
  1056. -lastObject
  1057.  
  1058. This method returns the last object stored in the list. 
  1059.  
  1060.  
  1061. ΓòÉΓòÉΓòÉ 9.2.11. objectAt: ΓòÉΓòÉΓòÉ
  1062.  
  1063. -objectAt: (unsigned long) position
  1064.  
  1065. -objectAt: returns the object stored at index position. If position is invalid, 
  1066. nil is returned. 
  1067.  
  1068.  
  1069. ΓòÉΓòÉΓòÉ 9.2.12. indexOf: ΓòÉΓòÉΓòÉ
  1070.  
  1071. -(unsigned long) indexOf: anObject
  1072.  
  1073. To find the index of the object anObject use -indexOf:. Comparisons and search 
  1074. are performed using the stored objects' isEqual: methods. 
  1075.  
  1076.  
  1077. ΓòÉΓòÉΓòÉ 9.2.13. removeLastObject ΓòÉΓòÉΓòÉ
  1078.  
  1079. -removeLastObject
  1080.  
  1081. This method removes the last object in the list. The object removed is 
  1082. returned. If there is no object in the list when calling this method, nil is 
  1083. returned. 
  1084.  
  1085. Your application is responsible for freeing the removed object if it is needed 
  1086. no more. 
  1087.  
  1088.  
  1089. ΓòÉΓòÉΓòÉ 9.2.14. removeObjectAt: ΓòÉΓòÉΓòÉ
  1090.  
  1091. -removeObjectAt: (unsigned long)position
  1092.  
  1093. -removeObjectAt: removes the object stored at index position from the list. The 
  1094. indices of all objects stored in the list after position are decreased by one. 
  1095. On success, the removed object is returned, nil otherwise. 
  1096.  
  1097.  
  1098. ΓòÉΓòÉΓòÉ 9.2.15. replaceObjectAt: with: ΓòÉΓòÉΓòÉ
  1099.  
  1100. -replaceObjectAt: (unsigned long) with: anObjectposition
  1101.  
  1102. Using this method, the object stored at index position is replaced with 
  1103. anObject. The object stored previously is returned. If position is invalid, nil 
  1104. is returned and no changes are performed. 
  1105.  
  1106.  
  1107. ΓòÉΓòÉΓòÉ 10. String ΓòÉΓòÉΓòÉ
  1108.  
  1109. Inherits from: Object 
  1110.  
  1111. Class description: 
  1112.  
  1113. To handle NULL-terminated strings as Objective C objects you can use instances 
  1114. of the class String. The memory management is handled automatically for you, 
  1115. setting and reading the data is only possible using the instance methods 
  1116. -setStringValue: and -stringValue. 
  1117.  
  1118. String objects are quite useful as the key objects in a KeyedList. 
  1119.  
  1120.  
  1121. ΓòÉΓòÉΓòÉ 10.1. Instance Variables ΓòÉΓòÉΓòÉ
  1122.  
  1123.  
  1124. ΓòÉΓòÉΓòÉ 10.1.1. char *stringValue ΓòÉΓòÉΓòÉ
  1125.  
  1126. stringValue stores a pointer to a NULL-terminated string representing the value 
  1127. of the object. The string itself is stored in a private memory area of the 
  1128. object; the memory management is automatically handled by the instance methods 
  1129. of this class. 
  1130.  
  1131.  
  1132. ΓòÉΓòÉΓòÉ 10.2. Methods ΓòÉΓòÉΓòÉ
  1133.  
  1134.  
  1135. ΓòÉΓòÉΓòÉ 10.2.1. init ΓòÉΓòÉΓòÉ
  1136.  
  1137. -init
  1138.  
  1139. -init initializes the object and sets stringValue to an empty string. 
  1140.  
  1141.  
  1142. ΓòÉΓòÉΓòÉ 10.2.2. free ΓòÉΓòÉΓòÉ
  1143.  
  1144. -free
  1145.  
  1146. This method will free the object and the memory allocated for storing the 
  1147. string value of the object itself. 
  1148.  
  1149.  
  1150. ΓòÉΓòÉΓòÉ 10.2.3. stringValue ΓòÉΓòÉΓòÉ
  1151.  
  1152. -(char *) stringValue
  1153.  
  1154. -stringValue returns a pointer to the private memory area of the object where 
  1155. the string value is stored. Do not modify this memory area yourself. 
  1156.  
  1157.  
  1158. ΓòÉΓòÉΓòÉ 10.2.4. setStringValue: ΓòÉΓòÉΓòÉ
  1159.  
  1160. -setStringValue: (char *) aValue
  1161.  
  1162. To set and/or modify the objects value use -setStringValue:. It is taken care 
  1163. that enough memory is allocated and the NULL-terminated string pointed to by 
  1164. aValue is copied into the private memory area of the object. 
  1165.  
  1166.  
  1167. ΓòÉΓòÉΓòÉ 10.2.5. isEqual: ΓòÉΓòÉΓòÉ
  1168.  
  1169. -(BOOL) isEqual: anObject
  1170.  
  1171. This method is used to check the object anObject and this object for 
  1172. equivalence. The objects are said to be equivalent if they store the same 
  1173. string value as checked by character-wise comparisons. 
  1174.  
  1175. anObject does not have to be an instance of String by itself, it does only have 
  1176. to respond to the selector -stringValue. 
  1177.  
  1178.  
  1179. ΓòÉΓòÉΓòÉ 10.2.6. compare: ΓòÉΓòÉΓòÉ
  1180.  
  1181. -(int) compare: anotherObject
  1182.  
  1183. -compare: will return 0 if the object itself and anotherObject are storing the 
  1184. same string value. 
  1185.  
  1186. For this purpose, anotherObject must respond to the selector -stringValue. 
  1187.  
  1188. In case the string value of this object is less than the string value of 
  1189. anotherObject an integer number less than 0 is returned, in case the string 
  1190. value of this object is greater, an integer greater than 0 is returned. 
  1191.  
  1192. If anotherObject does not respond to -stringValue, the -compare: method of 
  1193. String's superclass is invoked and the result of it is returned. 
  1194.  
  1195.  
  1196. ΓòÉΓòÉΓòÉ 11. PM Programming Classes ΓòÉΓòÉΓòÉ
  1197.  
  1198.  
  1199. ΓòÉΓòÉΓòÉ 12. Presentation Manager Library---Overview ΓòÉΓòÉΓòÉ
  1200.  
  1201. In this part of the manual the Presentation Manager library will be described. 
  1202. Starting with an overview of the classes and protocols provided in this chapter 
  1203. the classes will be described in the next chapter (see Page cha:pm-classes). In 
  1204. Chapter cha:pm-protocols the protocols defined and used by the PM library will 
  1205. be dealt with. 
  1206.  
  1207.  
  1208.  
  1209. Inheritance hierarchy in Presentation Manager Class library
  1210.  
  1211. Figure * shows all classes implemented in the Presentation Manager library and 
  1212. their inheritence hierarchy. 
  1213.  
  1214. In the beginning you will be shown an alphabetically listed overview of all 
  1215. classes and protocols with their instance variables and all supported methods. 
  1216. This was written in the style of an Objective C Interface declaration. 
  1217.  
  1218. General information about PM programming can be found in * and * 
  1219.  
  1220.  
  1221. ΓòÉΓòÉΓòÉ 12.1. Class "ActionWindow" ΓòÉΓòÉΓòÉ
  1222.  
  1223. @interface ActionWindow : DelegateWindow <Archiving>
  1224. {
  1225. CommandList *commandBindings;
  1226. id clientWindow;
  1227. id menu;
  1228. }
  1229.  
  1230. -init;
  1231. -free;
  1232. -bindCommand: (ULONG) command withObject: anObject
  1233. selector: (SEL) aSel;
  1234. -findCommandBinding: (ULONG) command;
  1235. -(MRESULT) execCommand: (ULONG) command;
  1236.  
  1237. -menu;
  1238. -createMenu;
  1239. -destroyMenu;
  1240.  
  1241. -setClientWindow: aClient;
  1242. -clientWindow;
  1243. -performClose: sender;
  1244. -performQuit: sender;
  1245.  
  1246. @end
  1247.  
  1248.  
  1249. ΓòÉΓòÉΓòÉ 12.2. Protocol "Archiving" ΓòÉΓòÉΓòÉ
  1250.  
  1251. @protocol Archiving
  1252.  
  1253. -awake;
  1254. -read: (TypedStream *) aStream;
  1255. -write: (TypedStream *) aStream;
  1256.  
  1257. @end
  1258.  
  1259.  
  1260. ΓòÉΓòÉΓòÉ 12.3. Class "AutoCheckBox" ΓòÉΓòÉΓòÉ
  1261.  
  1262. @interface AutoCheckBox : Button
  1263. {
  1264. }
  1265.  
  1266. -initWithId: (ULONG) anId andFlags: (ULONG) flags
  1267. in: (Window *) parent;
  1268.  
  1269. @end
  1270.  
  1271.  
  1272. ΓòÉΓòÉΓòÉ 12.4. Class "AutoRadioButton" ΓòÉΓòÉΓòÉ
  1273.  
  1274. @interface AutoRadioButton : Button
  1275. {
  1276. }
  1277.  
  1278. -initWithId: (ULONG) anId andFlags: (ULONG) flags
  1279. in: (Window *) parent;
  1280.  
  1281. @end
  1282.  
  1283.  
  1284. ΓòÉΓòÉΓòÉ 12.5. Class "AutoTriStateButton" ΓòÉΓòÉΓòÉ
  1285.  
  1286. @interface AutoTriStateButton : Button
  1287. {
  1288. }
  1289.  
  1290. -initWithId: (ULONG) anId andFlags: (ULONG) flags
  1291. in: (Window *) parent;
  1292.  
  1293. @end
  1294.  
  1295.  
  1296. ΓòÉΓòÉΓòÉ 12.6. Class "Button" ΓòÉΓòÉΓòÉ
  1297.  
  1298. @interface Button : FactoryWindow <Archiving>
  1299. {
  1300. Command command;
  1301. }
  1302.  
  1303. -initWithId: (ULONG) anId andFlags: (ULONG) flags
  1304. in: (Window *) parent;
  1305. -clickdown;
  1306. -clickup;
  1307. -(USHORT) checked;
  1308. -(BOOL) highlighted;
  1309. -check;
  1310. -checkIndeterminate;
  1311. -uncheck;
  1312.  
  1313. -(char *) text: (char *) buffer;
  1314. -setText: (char *) buffer;
  1315.  
  1316. -setTarget: aTarget;
  1317. -setAction: (SEL) anAction;
  1318.  
  1319. -bindWith: anObject selector: (SEL) aSel;
  1320.  
  1321. -(MRESULT) handleMessage: (ULONG) msg
  1322. withParams: (MPARAM) mp1 and: (MPARAM) mp2;
  1323.  
  1324. @end
  1325.  
  1326.  
  1327. ΓòÉΓòÉΓòÉ 12.7. Class "CheckBox" ΓòÉΓòÉΓòÉ
  1328.  
  1329. @interface CheckBox : Button
  1330. {
  1331. }
  1332.  
  1333. -initWithId: (ULONG) anId andFlags: (ULONG) flags
  1334. in: (Window *) parent;
  1335.  
  1336. @end
  1337.  
  1338.  
  1339. ΓòÉΓòÉΓòÉ 12.8. Class "ComboBox" ΓòÉΓòÉΓòÉ
  1340.  
  1341. @interface ComboBox : ListBox
  1342. {
  1343. }
  1344.  
  1345. -initWithId: (ULONG) anId andFlags: (ULONG) flags
  1346. in: (Window *) parent;
  1347.  
  1348. -(HWND) entryField;
  1349. -(HWND) listBox;
  1350.  
  1351. @end
  1352.  
  1353.  
  1354. ΓòÉΓòÉΓòÉ 12.9. Class "Container" ΓòÉΓòÉΓòÉ
  1355.  
  1356. @interface Container : FactoryWindow <Archiving>
  1357. {
  1358. ULONG createFlags;
  1359. CONTAINER_MINIREC *recordBuffer;
  1360. FIELDINFO *columnBuffer;
  1361. }
  1362.  
  1363. -initWithId: (ULONG) anId andFlags: (ULONG) flags
  1364. in: (Window *) parent;
  1365. -addColumn: (char *) aTitle;
  1366.  
  1367. -insertObject: anObject;
  1368. -insertObject: anObject withTitle: (const char *) aTitle;
  1369. -insertObject: anObject withTitle: (const char *) aTitle
  1370. andIcon: (ULONG) anIcon;
  1371.  
  1372. -insertObjectList: aList;
  1373. -insertObjectList: aList withTitles: titleList;
  1374. -insertObjectList: aList withTitles: titleList
  1375. andIcon: (ULONG) anIcon;
  1376.  
  1377. -insertObject: anObject parent: parentObject;
  1378. -insertObject: anObject withTitle: (char *) aTitle
  1379. parent: parentObject;
  1380. -insertObject: anObject withTitle: (char *) aTitle
  1381. andIcon: (ULONG) anIcon parent: parentObject;
  1382.  
  1383. -arrange;
  1384. -iconView: sender;
  1385. -nameView: sender;
  1386. -textView: sender;
  1387. -treeView: sender;
  1388. -detailView: sender;
  1389.  
  1390. -(ULONG) records;
  1391. -object;
  1392.  
  1393. -(CONTAINER_MINIREC *) findRecord: anObject;
  1394. -(CONTAINER_MINIREC *) firstRecord;
  1395. -(CONTAINER_MINIREC *) lastRecord;
  1396. -(CONTAINER_MINIREC *) nextRecord;
  1397. -(CONTAINER_MINIREC *) previousRecord;
  1398. -(CONTAINER_MINIREC *) childRecord;
  1399. -(CONTAINER_MINIREC *) parentRecord;
  1400. -(CONTAINER_MINIREC *) firstSelected;
  1401. -(CONTAINER_MINIREC *) nextSelected;
  1402. -(BOOL) recordIsSelected;
  1403.  
  1404. -objectWithTitle: (char *) aTitle;
  1405.  
  1406. -invalidateRecord;
  1407. -invalidateSelectedRecords;
  1408.  
  1409. -hideRecord : sender;
  1410. -hideSelectedRecords : sender;
  1411. -hideNotSelectedRecords : sender;
  1412. -showRecord : sender;
  1413. -showAllRecords : sender;
  1414. -(BOOL) recordIsHidden;
  1415.  
  1416. -removeAllColumns: sender;
  1417. -removeAllRecords: sender;
  1418. -removeSelectedRecords: sender;
  1419.  
  1420. -(ULONG) columns;
  1421.  
  1422. -(FIELDINFO *) firstColumn;
  1423. -(FIELDINFO *) lastColumn;
  1424. -(FIELDINFO *) nextColumn;
  1425. -(FIELDINFO *) previousColumn;
  1426.  
  1427. -(char *) columnTitle;
  1428. -(ULONG) columnTitleAttributes;
  1429. -(ULONG) columnDataAttributes;
  1430.  
  1431. -hideColumn : sender;
  1432. -showColumn : sender;
  1433. -showAllColumns : sender;
  1434. -(BOOL) columnIsHidden;
  1435.  
  1436. -invalidateColumns;
  1437. -setColumnTitleAttributes: (ULONG) attr;
  1438. -setColumnDataAttributes: (ULONG) attr;
  1439.  
  1440. -select;
  1441. -deselect;
  1442. -selectAll: sender;
  1443. -deselectAll: sender;
  1444.  
  1445. -sort: (ULONG) column;
  1446. -sortByTitleWithCase: sender;
  1447. -sortByTitleWithoutCase: sender;
  1448.  
  1449. -(MRESULT) handleMessage: (ULONG) msg
  1450. withParams: (MPARAM) mp1 and: (MPARAM) mp2;
  1451.  
  1452. @end
  1453.  
  1454.  
  1455. ΓòÉΓòÉΓòÉ 12.10. Class "DelegateWindow" ΓòÉΓòÉΓòÉ
  1456.  
  1457. @interface DelegateWindow : Window
  1458. {
  1459. id delegate;
  1460. }
  1461.  
  1462. -init;
  1463. -setDelegate: anObject;
  1464. -delegate;
  1465.  
  1466. @end
  1467.  
  1468.  
  1469. ΓòÉΓòÉΓòÉ 12.11. Class "EntryField" ΓòÉΓòÉΓòÉ
  1470.  
  1471. @interface EntryField : FactoryWindow <Selection,Archiving,Value>
  1472. {
  1473. int textLimit;
  1474. }
  1475.  
  1476. -initWithId: (ULONG) anId andFlags: (ULONG) flags
  1477. in: (Window *) parent;
  1478.  
  1479. -(BOOL) changed;
  1480. -(BOOL) readOnly;
  1481.  
  1482. -setReadOnly;
  1483. -setReadWrite;
  1484. -setTextLimit: (SHORT) limit;
  1485. -(int) textLimit;
  1486.  
  1487. -(MRESULT) handleMessage: (ULONG) msg
  1488. withParams: (MPARAM) mp1 and: (MPARAM) mp2;
  1489.  
  1490. @end
  1491.  
  1492.  
  1493. ΓòÉΓòÉΓòÉ 12.12. Class "FactoryWindow" ΓòÉΓòÉΓòÉ
  1494.  
  1495. @interface FactoryWindow : DelegateWindow
  1496. {
  1497. HWND owner;
  1498. }
  1499.  
  1500. -initIn: (Window *) parent;
  1501. -associate: (HWND) hwnd;
  1502.  
  1503. -destroy;
  1504.  
  1505. -setWindow: (HWND) aWindow;
  1506.  
  1507. -(MRESULT) handleMessage: (ULONG) msg
  1508. withParams: (MPARAM) mp1 and: (MPARAM) mp2;
  1509.  
  1510. -specialClass;
  1511.  
  1512. @end
  1513.  
  1514.  
  1515. ΓòÉΓòÉΓòÉ 12.13. Class "FileDlg" ΓòÉΓòÉΓòÉ
  1516.  
  1517. @interface FileDlg : Object
  1518. {
  1519. FILEDLG fileDlg;
  1520. }
  1521.  
  1522. -init;
  1523. -initForOpen: (const char *) aTitle
  1524. withFilter: (char *) aFilter;
  1525. -initForSaveAs: (const char *) aTitle
  1526. withFilter: (char *) aFilter;
  1527. -free;
  1528.  
  1529. -setTitle: (char *) aTitle;
  1530. -setFilter: (char *) aFilter;
  1531. -setFlags: (ULONG) aFlags;
  1532. -setOKTitle: (const char *) aTitle;
  1533.  
  1534. -runModalFor: sender;
  1535.  
  1536. -(char *) fileName;
  1537. -(ULONG) result;
  1538.  
  1539. @end
  1540.  
  1541.  
  1542. ΓòÉΓòÉΓòÉ 12.14. Class "Frame" ΓòÉΓòÉΓòÉ
  1543.  
  1544. @interface Frame : Window
  1545. {
  1546. }
  1547.  
  1548. @end
  1549.  
  1550.  
  1551. ΓòÉΓòÉΓòÉ 12.15. Class "Help" ΓòÉΓòÉΓòÉ
  1552.  
  1553. @interface Help : Object <Archiving>
  1554. {
  1555. BOOL helpEnabled;
  1556. HWND helpInstance;
  1557.  
  1558. id helpFileName;
  1559. id helpWindowTitle;
  1560. ULONG helpTable;
  1561. HAB hab;
  1562. }
  1563.  
  1564. -init;
  1565. -initForApp: (StdApp *) anApp helpFile: (char *) fileName;
  1566. -initForApp: (StdApp *) anApp helpFile: (char *) fileName
  1567. withTitle: (char *) helpTitle;
  1568. -initForApp: (StdApp *) anApp helpFile: (char *) fileName
  1569. withTitle: (char *) helpTitle helpTable: (ULONG) helpTableID;
  1570.  
  1571. -free;
  1572.  
  1573. -associateWith: aWindow;
  1574.  
  1575. -createHelpInstance;
  1576.  
  1577. -helpForHelp: sender;
  1578. -helpExtended: sender;
  1579. -helpIndex: sender;
  1580. -helpFor: sender;
  1581. -helpForTopic: (int) topic;
  1582.  
  1583. -helpFileName;
  1584. -helpWindowTitle;
  1585. -(ULONG) helpTable;
  1586. -setHelpTable: (ULONG) anId;
  1587.  
  1588. @end
  1589.  
  1590.  
  1591. ΓòÉΓòÉΓòÉ 12.16. Class "InterfaceFile" ΓòÉΓòÉΓòÉ
  1592.  
  1593. @interface InterfaceFile : Object <Archiving>
  1594. {
  1595. }
  1596.  
  1597. -init;
  1598. -free;
  1599. -freeObjects;
  1600.  
  1601. -objectWithTitle: (char *) aTitle;
  1602.  
  1603. @end
  1604.  
  1605.  
  1606. ΓòÉΓòÉΓòÉ 12.17. Class "ListBox" ΓòÉΓòÉΓòÉ
  1607.  
  1608. @interface ListBox : FactoryWindow <Archiving>
  1609. {
  1610. }
  1611.  
  1612. -initWithId: (ULONG) anId andFlags: (ULONG) flags
  1613. in: (Window *) parent;
  1614.  
  1615. -insertItem: (SHORT) pos text: (char *) buffer;
  1616.  
  1617. -(unsigned long) count;
  1618. -(SHORT) selected;
  1619. -(SHORT) itemTextLength: (SHORT) pos;
  1620. -(char *) item: (SHORT) pos text: (char *) buffer;
  1621.  
  1622. -selectItem: (SHORT) pos;
  1623. -deleteItem: (SHORT) pos;
  1624. -deleteAll;
  1625.  
  1626. -(MRESULT) handleMessage: (ULONG) msg
  1627. withParams: (MPARAM) mp1 and: (MPARAM) mp2;
  1628.  
  1629. @end
  1630.  
  1631.  
  1632. ΓòÉΓòÉΓòÉ 12.18. Class "MainWindow" ΓòÉΓòÉΓòÉ
  1633.  
  1634. @interface MainWindow : StdWindow
  1635. {
  1636. }
  1637.  
  1638. -initWithId: (ULONG) anId;
  1639. -initWithId: (ULONG) anId andFlags: (ULONG) flags;
  1640.  
  1641. -(MRESULT) handleMessage: (ULONG) msg
  1642. withParams: (MPARAM) mp1 and: (MPARAM) mp2;
  1643.  
  1644. @end
  1645.  
  1646.  
  1647. ΓòÉΓòÉΓòÉ 12.19. Class "Menu" ΓòÉΓòÉΓòÉ
  1648.  
  1649. @interface Menu : Window <Archiving>
  1650. {
  1651. id itemList;
  1652. }
  1653.  
  1654. -init;
  1655. -initWithId: (ULONG) anId
  1656. andFlags: (ULONG) flags;
  1657. -initWithId: (ULONG) anId
  1658. andFlags: (ULONG) flags in: parent;
  1659.  
  1660. -free;
  1661.  
  1662. -insertItem: anItem at: (SHORT) pos;
  1663.  
  1664. -enableItem: (USHORT) identifier;
  1665. -disableItem: (USHORT) identifier;
  1666.  
  1667. -popup: sender;
  1668.  
  1669. -itemList;
  1670.  
  1671. @end
  1672.  
  1673.  
  1674. ΓòÉΓòÉΓòÉ 12.20. Class "MenuItem" ΓòÉΓòÉΓòÉ
  1675.  
  1676. @interface MenuItem : Object
  1677. {
  1678. ULONG pmId;
  1679. char *title;
  1680. id subMenu;
  1681. }
  1682.  
  1683. -init;
  1684. -initWithId: (ULONG) anId andTitle: (char *) aTitle;
  1685. -initWithId: (ULONG) anId andTitle: (char *) aTitle subMenu: aSubMenu;
  1686.  
  1687. -free;
  1688.  
  1689. -setTitle: (char *) aTitle;
  1690. -(char *) title;
  1691. -setPmId: (ULONG) anId;
  1692. -(ULONG) pmId;
  1693. -setSubMenu: aSubMenu;
  1694. -subMenu;
  1695.  
  1696. @end
  1697.  
  1698.  
  1699. ΓòÉΓòÉΓòÉ 12.21. Class "MultiLineEntryField" ΓòÉΓòÉΓòÉ
  1700.  
  1701. @interface MultiLineEntryField : FactoryWindow <Archiving,Selection>
  1702. {
  1703. }
  1704.  
  1705. -initWithId: (ULONG) anId andFlags: (ULONG) flags
  1706. in: (Window *) parent;
  1707.  
  1708. -(long) indexForLine: (long) line;
  1709. -delete: (unsigned long) count at: (long) index;
  1710. -insertText: (char *) aText;
  1711. -insertText: (char *) aText at: (long) index;
  1712. -appendText: (char *) aText;
  1713.  
  1714. -clearAll: sender;
  1715.  
  1716. @end
  1717.  
  1718.  
  1719. ΓòÉΓòÉΓòÉ 12.22. Class "NoteBook" ΓòÉΓòÉΓòÉ
  1720.  
  1721. @interface NoteBook : FactoryWindow <Archiving>
  1722. {
  1723. }
  1724.  
  1725. -initWithId: (ULONG) anId andFlags: (ULONG) flags
  1726. in: (Window *) parent;
  1727.  
  1728. -(ULONG) createTopPageWithStatusText: (BOOL) stFlag;
  1729. -(ULONG) createMajorTopPageWithStatusText: (BOOL) stFlag;
  1730. -(ULONG) createMinorTopPageWithStatusText: (BOOL) stFlag;
  1731.  
  1732. -(ULONG) createLastPageWithStatusText: (BOOL) stFlag;
  1733. -(ULONG) createMajorLastPageWithStatusText: (BOOL) stFlag;
  1734. -(ULONG) createMinorLastPageWithStatusText: (BOOL) stFlag;
  1735.  
  1736. -(ULONG) createPageBefore: (ULONG) pageID
  1737. withStatusText: (BOOL) stFlag;
  1738. -(ULONG) createMajorPageBefore: (ULONG) pageID
  1739. withStatusText: (BOOL) stFlag;
  1740. -(ULONG) createMinorPageBefore: (ULONG) pageID
  1741. withStatusText: (BOOL) stFlag;
  1742.  
  1743. -(ULONG) createPageAfter: (ULONG) pageID
  1744. withStatusText: (BOOL) statusFlag;
  1745. -(ULONG) createMajorPageAfter: (ULONG) pageID
  1746. withStatusText: (BOOL) stFlag;
  1747. -(ULONG) createMinorPageAfter: (ULONG) pageID
  1748. withStatusText: (BOOL) stFlag;
  1749.  
  1750. -deletePage: (ULONG) pageID;
  1751. -deleteAllPages;
  1752.  
  1753. -setStatusLineTextFor: (ULONG) pageID
  1754. to: (char *) aString;
  1755. -setTabTextFor: (ULONG) pageID
  1756. to: (char *) aString;
  1757.  
  1758. -setMajorTabDimensions: (USHORT) width : (USHORT) height;
  1759. -sizeMajorTabs;
  1760. -setMinorTabDimensions: (USHORT) width : (USHORT) height;
  1761. -setPageButtonDimensions: (USHORT) width : (USHORT) height;
  1762.  
  1763. -setPage: (ULONG) pageID to: (Window *) aWindow;
  1764. -selectPage: (ULONG) pageID;
  1765.  
  1766. @end
  1767.  
  1768.  
  1769. ΓòÉΓòÉΓòÉ 12.23. Class "PresentationSpace" ΓòÉΓòÉΓòÉ
  1770.  
  1771. @interface PresentationSpace : Object <Archiving>
  1772. {
  1773. HPS hps;
  1774. float spacing;
  1775. LONG xResolution;
  1776. LONG yResolution;
  1777. LONG textHeight;
  1778. }
  1779.  
  1780. -init;
  1781.  
  1782. -setHPS: (HPS) aHPS;
  1783. -(HPS) hps;
  1784.  
  1785. -(LONG) widthInPels;
  1786. -(LONG) widthInMm;
  1787. -(LONG) heightInPels;
  1788. -(LONG) heightInMm;
  1789.  
  1790. -(LONG) xResolution;
  1791. -(LONG) yResolution;
  1792.  
  1793. -(LONG) textHeight;
  1794.  
  1795. -setSpacing: (float) ratio;
  1796. -(float) spacing;
  1797.  
  1798. -setFont: (char *) fontName;
  1799. -setFont: (char *) fontName at: (LONG) pointSize;
  1800. -setFontSize: (LONG) pointSize;
  1801.  
  1802. -(LONG) stringWidth: (char *) aString;
  1803. -(LONG) stringBoxWidth: (char *) stringBox;
  1804. -(LONG) stringBoxHeight: (char *) stringBox;
  1805.  
  1806. -string: (char *) aString;
  1807. -string: (char *) aString at: (LONG) x : (LONG) y;
  1808. -stringBox: (char *) stringBox;
  1809. -stringBox: (char *) stringBox at: (LONG) x : (LONG) y;
  1810.  
  1811. -lineTo: (LONG) x : (LONG) y;
  1812. -lineFrom: (LONG) x0 : (LONG) y0 to: (LONG) x : (LONG) y;
  1813.  
  1814. @end
  1815.  
  1816.  
  1817. ΓòÉΓòÉΓòÉ 12.24. Class "Printer" ΓòÉΓòÉΓòÉ
  1818.  
  1819. @interface Printer : PresentationSpace <Archiving>
  1820. {
  1821. id setupDialog;
  1822. }
  1823.  
  1824. -initForApp: (StdApp *) anApp;
  1825. -free;
  1826.  
  1827. -beginSpool: (char *) spoolTitle
  1828. appTitle: (char *) appTitle;
  1829. -endSpool;
  1830. -newPage;
  1831.  
  1832. -printerSetup: sender;
  1833.  
  1834. -setSetupDialog: aSetupDialog;
  1835. -setupDialog;
  1836. -jobProperties: sender;
  1837. -setDefault;
  1838.  
  1839. -(LONG) widthInPels;
  1840. -(LONG) widthInMm;
  1841. -(LONG) heightInPels;
  1842. -(LONG) heightInMm;
  1843.  
  1844. @end
  1845.  
  1846.  
  1847. ΓòÉΓòÉΓòÉ 12.25. Class "Profile" ΓòÉΓòÉΓòÉ
  1848.  
  1849. @interface Profile : Object
  1850. {
  1851. HINI profileHandle;
  1852. }
  1853.  
  1854. -init;
  1855. -init: (char *) name forApp: (StdApp *) app;
  1856. -initUserProfile;
  1857. -initSystemProfile;
  1858. -free;
  1859.  
  1860. -deleteKey: (char *) key section: (char *) section;
  1861. -(void *) readData: (void *) data key: (char *) key
  1862. section: (char *) section;
  1863. -(void *) readData: (void *) data size: (long) size
  1864. key: (char *) key section: (char *) section;
  1865. -(char *) readString: (char *) data key: (char *) key
  1866. section: (char *) section;
  1867. -(char *) readString: (char *) data size: (long) size
  1868. key: (char *) key section: (char *) section;
  1869. -(long) sizeForKey: (char *) key section: (char *) section;
  1870. -writeData: (void *) data size: (long) size
  1871. key: (char *) key section: (char *) section;
  1872. -writeString: (char *) data key: (char *) key
  1873. section: (char *) section;
  1874.  
  1875. @end
  1876.  
  1877.  
  1878. ΓòÉΓòÉΓòÉ 12.26. Class "PushButton" ΓòÉΓòÉΓòÉ
  1879.  
  1880. @interface PushButton : Button
  1881. {
  1882. }
  1883.  
  1884. -initWithId: (ULONG) anId andFlags: (ULONG) flags
  1885. in: (Window *) parent;
  1886.  
  1887. @end
  1888.  
  1889.  
  1890. ΓòÉΓòÉΓòÉ 12.27. Class "RadioButton" ΓòÉΓòÉΓòÉ
  1891.  
  1892. @interface RadioButton : Button
  1893. {
  1894. }
  1895.  
  1896. -initWithId: (ULONG) anId andFlags: (ULONG) flags
  1897. in: (Window *) parent;
  1898.  
  1899. @end
  1900.  
  1901.  
  1902. ΓòÉΓòÉΓòÉ 12.28. Class "ScrollBar" ΓòÉΓòÉΓòÉ
  1903.  
  1904. @interface ScrollBar : FactoryWindow <Archiving>
  1905. {
  1906. }
  1907.  
  1908. -initWithId: (ULONG) anId andFlags: (ULONG) flags
  1909. in: (Window *) parent;
  1910.  
  1911. -(SHORT) position;
  1912. -(SHORT) lowerBound;
  1913. -(SHORT) upperBound;
  1914.  
  1915. -setPosition: (SHORT) position;
  1916. -setScrollbar: (SHORT) position
  1917. withBounds: (SHORT) lower : (SHORT) upper;
  1918. -setThumbSizeForVisible: (SHORT) visible
  1919. of: (SHORT) all;
  1920.  
  1921. @end
  1922.  
  1923.  
  1924. ΓòÉΓòÉΓòÉ 12.29. Protocol "Selection" ΓòÉΓòÉΓòÉ
  1925.  
  1926. @protocol Selection
  1927.  
  1928. -clearSelection: sender;
  1929. -copySelection: sender;
  1930. -cutSelection: sender;
  1931. -pasteSelection: sender;
  1932.  
  1933. @end
  1934.  
  1935.  
  1936. ΓòÉΓòÉΓòÉ 12.30. Class "Slider" ΓòÉΓòÉΓòÉ
  1937.  
  1938. @interface Slider : FactoryWindow <Archiving>
  1939. {
  1940. }
  1941.  
  1942. -initWithId: (ULONG) anId andFlags: (ULONG) flags
  1943. in: (Window *) parent;
  1944.  
  1945. @end
  1946.  
  1947.  
  1948. ΓòÉΓòÉΓòÉ 12.31. Class "SpinButton" ΓòÉΓòÉΓòÉ
  1949.  
  1950. @interface SpinButton : FactoryWindow <Archiving>
  1951. {
  1952. }
  1953.  
  1954. -initWithId: (ULONG) anId andFlags: (ULONG) flags
  1955. in: (Window *) parent;
  1956.  
  1957. @end
  1958.  
  1959.  
  1960. ΓòÉΓòÉΓòÉ 12.32. Class "Static" ΓòÉΓòÉΓòÉ
  1961.  
  1962. @interface Static : FactoryWindow <Archiving>
  1963. {
  1964. }
  1965.  
  1966. -initWithId: (ULONG) anId andFlags: (ULONG) flags
  1967. in: (Window *) parent;
  1968.  
  1969. @end
  1970.  
  1971.  
  1972. ΓòÉΓòÉΓòÉ 12.33. Class "StdApp" ΓòÉΓòÉΓòÉ
  1973.  
  1974. @interface StdApp : Object
  1975. {
  1976. HAB hab;
  1977. HMQ hmq;
  1978. }
  1979.  
  1980. -init;
  1981. -free;
  1982. -run;
  1983.  
  1984. -(HAB) hab;
  1985.  
  1986. -loadIBFile: (char *) fileName;
  1987.  
  1988. @end
  1989.  
  1990.  
  1991. ΓòÉΓòÉΓòÉ 12.34. Class "StdDialog" ΓòÉΓòÉΓòÉ
  1992.  
  1993. @interface StdDialog : ActionWindow <Archiving>
  1994. {
  1995. ULONG result;
  1996. BOOL running;
  1997.  
  1998. ULONG createFlags;
  1999. }
  2000.  
  2001. -initWithId: (ULONG) anId;
  2002. -initWithId: (ULONG) anId andFlags: (ULONG) flags;
  2003. -loadMenu;
  2004. -free;
  2005.  
  2006. -(ULONG) createFlags;
  2007. -setCreateFlags: (ULONG) flags;
  2008.  
  2009. -updateFrame;
  2010.  
  2011. -(ULONG) result;
  2012.  
  2013. -setTitle: (char *) aTitle;
  2014.  
  2015. -makeKeyAndOrderFront: sender;
  2016. -runModalFor: sender;
  2017. -dismiss: sender;
  2018. -dismissOK: sender;
  2019. -(BOOL) running;
  2020.  
  2021. -centerOnScreen: sender;
  2022.  
  2023. -(MRESULT) handleMessage: (ULONG) msg
  2024. withParams: (MPARAM) mp1 and: (MPARAM) mp2;
  2025.  
  2026. @end
  2027.  
  2028.  
  2029. ΓòÉΓòÉΓòÉ 12.35. Class "StdWindow" ΓòÉΓòÉΓòÉ
  2030.  
  2031. @interface StdWindow : ActionWindow <Archiving>
  2032. {
  2033. HWND frame;
  2034.  
  2035. ULONG createFlags;
  2036. }
  2037.  
  2038. -initWithId: (ULONG) anId;
  2039. -initWithId: (ULONG) anId andFlags: (ULONG) flags;
  2040. -free;
  2041.  
  2042. -(ULONG) createFlags;
  2043. -setCreateFlags: (ULONG) flags;
  2044.  
  2045. -setSize: (LONG) x : (LONG) y : (LONG) w : (LONG) h;
  2046. -setRect: (LONG) w : (LONG) h;
  2047.  
  2048. -updateFrame;
  2049.  
  2050. -(LONG) framexoffset;
  2051. -(LONG) frameyoffset;
  2052. -(LONG) framewidth;
  2053. -(LONG) frameheight;
  2054. -frameSize: (PSWP) aSize;
  2055.  
  2056. -(HWND) frame;
  2057.  
  2058. -setTitle: (char *) aTitle;
  2059.  
  2060. -makeKeyAndOrderFront: sender;
  2061.  
  2062. -centerOnScreen: sender;
  2063.  
  2064. -(MRESULT) handleMessage: (ULONG) msg
  2065. withParams: (MPARAM) mp1 and: (MPARAM) mp2;
  2066.  
  2067. @end
  2068.  
  2069.  
  2070. ΓòÉΓòÉΓòÉ 12.36. Class "TitleBar" ΓòÉΓòÉΓòÉ
  2071.  
  2072. @interface TitleBar : Window
  2073. {
  2074. }
  2075.  
  2076. @end
  2077.  
  2078.  
  2079. ΓòÉΓòÉΓòÉ 12.37. Class "TriStateButton" ΓòÉΓòÉΓòÉ
  2080.  
  2081. @interface TriStateButton : Button
  2082. {
  2083. }
  2084.  
  2085. -initWithId: (ULONG) anId andFlags: (ULONG) flags
  2086. in: (Window *) parent;
  2087.  
  2088. @end
  2089.  
  2090.  
  2091. ΓòÉΓòÉΓòÉ 12.38. Protocol "Value" ΓòÉΓòÉΓòÉ
  2092.  
  2093. @protocol Value
  2094.  
  2095. -(char *) stringValue;
  2096. -(int) intValue;
  2097. -(long) longValue;
  2098. -(float) floatValue;
  2099.  
  2100. -setStringValue: (char *) aValue;
  2101. -setIntValue: (int) aValue;
  2102. -setLongValue: (long) aValue;
  2103. -setFloatValue: (float) aValue;
  2104.  
  2105. @end
  2106.  
  2107.  
  2108. ΓòÉΓòÉΓòÉ 12.39. Class "ValueSet" ΓòÉΓòÉΓòÉ
  2109.  
  2110. @interface ValueSet : Window
  2111. {
  2112. }
  2113.  
  2114. @end
  2115.  
  2116.  
  2117. ΓòÉΓòÉΓòÉ 12.40. Class "Window" ΓòÉΓòÉΓòÉ
  2118.  
  2119. @interface Window : Object <Archiving>
  2120. {
  2121. HWND window;
  2122. Window *child;
  2123. Window *sibling;
  2124.  
  2125. int tag;
  2126. }
  2127.  
  2128. -init;
  2129. -associate: (HWND) hwnd;
  2130. -free;
  2131.  
  2132. -destroy;
  2133.  
  2134. -(int) tag;
  2135. -setTag: (int) aTag;
  2136.  
  2137. -createObjects;
  2138. -insertChild: aChild;
  2139. -insertSibling: aSibling;
  2140. -deleteChild: aChild;
  2141. -deleteSibling: aSibling;
  2142.  
  2143. -findFromID: (ULONG) anId;
  2144. -findFromHWND: (HWND) aHwnd;
  2145.  
  2146. -setChild: (Window *) aChild;
  2147. -(Window *) child;
  2148. -setSibling: (Window *) aSibling;
  2149. -(Window *) sibling;
  2150.  
  2151. -(char *) text: (char *) buffer;
  2152. -(int) textLength;
  2153. -setText: (char *) buffer;
  2154. -setSize: (LONG) x : (LONG) y : (LONG) w : (LONG) h;
  2155. -setRect: (LONG) w : (LONG) h;
  2156. -size: (PSWP) aSize;
  2157.  
  2158. -(LONG) width;
  2159. -(LONG) height;
  2160. -(LONG) xoffset;
  2161. -(LONG) yoffset;
  2162.  
  2163. -(ULONG) windowStyle;
  2164.  
  2165. -setWindowStyle: (ULONG) styleFlags;
  2166.  
  2167. -(HWND) window;
  2168. -setWindow: (HWND) aWindow;
  2169. -(ULONG) pmId;
  2170. -setPmId: (ULONG) anId;
  2171.  
  2172. -enable;
  2173. -disable;
  2174. -activate;
  2175. -deactivate;
  2176.  
  2177. -invalidate;
  2178. -show;
  2179. -hide;
  2180.  
  2181. -(MRESULT) handleMessage: (ULONG) msg
  2182. withParams: (MPARAM) mp1 and: (MPARAM) mp2;
  2183.  
  2184. @end
  2185.  
  2186.  
  2187. ΓòÉΓòÉΓòÉ 13. Presentation Manager Library---Classes ΓòÉΓòÉΓòÉ
  2188.  
  2189. This chapter describes all variables and methods of the classes implemented in 
  2190. this library. 
  2191.  
  2192. The description consists of three to six parts: 
  2193.  
  2194.    1. The name of the class and the precessing inheritance hierarchy 
  2195.    2. A list of protocols the class adopts. The methods defined in the formal 
  2196.       protocols are not described here. See the protocols' descriptions for 
  2197.       more information. 
  2198.    3. A short description of the class and its proposed usage 
  2199.    4. A list of all instance variables and their use 
  2200.    5. All newly implemented class and instance methods and their description 
  2201.    6. Methods of a delegate object---if such methods are supported---which get 
  2202.       called at certain times 
  2203.  
  2204.  The list of instance variables is omitted if there are none of them defined 
  2205.  but those inherited from the superclass. 
  2206.  
  2207.  If a class doesn't support delegate objects the corresponding section in the 
  2208.  class description is omitted. 
  2209.  
  2210.  If in some method description no return type is specified, the return type 
  2211.  defaults to id, a generic pointer to an Objective C object. 
  2212.  
  2213.  Methods returning an id value normally return self, which is a pointer to the 
  2214.  object itself on successful completion, or  nil otherwise. 
  2215.  
  2216.  All methods having just one parameter called sender can be used as targets for 
  2217.  command/action bindings. If not stated otherwise, sender is ignored. Normally, 
  2218.  this parameter should be a pointer to the sending object which can be obtained 
  2219.  by self. 
  2220.  
  2221.  
  2222. ΓòÉΓòÉΓòÉ 14. ActionWindow ΓòÉΓòÉΓòÉ
  2223.  
  2224. Inherits from: DelegateWindow : Window : Object 
  2225.  
  2226. Archiving 
  2227.  
  2228. Class description: 
  2229.  
  2230. ActionWindow is the common superclass for StdWindow and StdDialog. This class 
  2231. implements the ability to bind command messages to methods in other objects. 
  2232.  
  2233. Everytime a command message occurs in a StdWindow or  StdDialog the 
  2234. Event-Handler searches for a command binding and---if found---executes the 
  2235. corresponding Action in the Target object. 
  2236.  
  2237. In addition to handling command messages, instances of ActionWindow do contain 
  2238. basic support for accessing a so-called client window and a menu bar. 
  2239.  
  2240.  
  2241. ΓòÉΓòÉΓòÉ 14.1. Instance Variables ΓòÉΓòÉΓòÉ
  2242.  
  2243.  
  2244. ΓòÉΓòÉΓòÉ 14.1.1. CommandList *commandBindings ΓòÉΓòÉΓòÉ
  2245.  
  2246. This variable stores a list of all command bindings set up for a certain 
  2247. instance of ActionWindow or one of its subclasses. 
  2248.  
  2249.  
  2250. ΓòÉΓòÉΓòÉ 14.1.2. idclientWindow ΓòÉΓòÉΓòÉ
  2251.  
  2252. Although a pointer to a client window is stored in instances of this class, 
  2253. subclasses must care to handle these special windows for themselves. Normally, 
  2254. a client window should be the size of the parent, which is the instance of 
  2255. ActionWindow itself. If the ActionWindow is resized or moved, the clientWindow 
  2256. should behave accordingly. 
  2257.  
  2258. The subclasses StdDialog, StdWindow and MainWindow implement handling the 
  2259. clientWindow so that the client window is always the size of the parent window. 
  2260. This is quite useful when only displaying a single control element---e.g. a 
  2261. ListBox or a MultiLineEntryField---in a window or dialog window. Access to this 
  2262. variable is provided via -clientWindow and -setClientWindow:. 
  2263.  
  2264.  
  2265. ΓòÉΓòÉΓòÉ 14.1.3. idmenu ΓòÉΓòÉΓòÉ
  2266.  
  2267. At the moment, menu is just a dummy variable. In future releases, this variable 
  2268. will be used to store a pointer to the main menu of the ActionWindow. All 
  2269. manipulations concerning this menu will be directed to menu. 
  2270.  
  2271. For those wishing to experiment with menus and the Objective C classes Menu and 
  2272. MenuItem---be aware, these classes are subject to change---the methods -menu, 
  2273. -createMenu and -destroyMenu are provided. 
  2274.  
  2275.  
  2276. ΓòÉΓòÉΓòÉ 14.2. Methods ΓòÉΓòÉΓòÉ
  2277.  
  2278.  
  2279. ΓòÉΓòÉΓòÉ 14.2.1. init ΓòÉΓòÉΓòÉ
  2280.  
  2281. -init
  2282.  
  2283. The instance method -init initializes the instance variable commandBindings to 
  2284. nil. 
  2285.  
  2286.  
  2287. ΓòÉΓòÉΓòÉ 14.2.2. free ΓòÉΓòÉΓòÉ
  2288.  
  2289. -free
  2290.  
  2291. -free frees the memory allocated for the list of command bindings. 
  2292.  
  2293. If a main menu for the window was created using -createMenu, it is not freed 
  2294. automatically. Use -destroyMenu before calling free! 
  2295.  
  2296.  
  2297. ΓòÉΓòÉΓòÉ 14.2.3. bindCommand: withObject: selector: ΓòÉΓòÉΓòÉ
  2298.  
  2299. -bindCommand: (ULONG) command withObject: anObject selector:(SEL) aSel
  2300.  
  2301. -bindCommand: withObject: selector: sets up a new command binding. command is 
  2302. the command identifier, which normally is the identifier of the sender of the 
  2303. command (Pushbutton, Menuitem, ...). anObject is the Target, aSel the selector 
  2304. of the Action. 
  2305.  
  2306. An Action must be of the form -nameOfMethod: sender. Only these methods can be 
  2307. called by -execCommand. Actions should return nil on successful execution, a 
  2308. non-nil value otherwise. 
  2309.  
  2310.  
  2311. ΓòÉΓòÉΓòÉ 14.2.4. findCommandBinding: ΓòÉΓòÉΓòÉ
  2312.  
  2313. -findCommandBinding: (ULONG) command
  2314.  
  2315. This method is used for checking if a command binding for  command has been set 
  2316. up previously. -findCommandBinding: returns nil, if no command binding for 
  2317. command has been set up, a non-nil value otherwise. 
  2318.  
  2319.  
  2320. ΓòÉΓòÉΓòÉ 14.2.5. execCommand: ΓòÉΓòÉΓòÉ
  2321.  
  2322. -(MRESULT) execCommand: (ULONG) command
  2323.  
  2324. -execCommand: searches for the command binding for  command and executes the 
  2325. corresponding Action in the set up Target, if one was found. 
  2326.  
  2327.  
  2328. ΓòÉΓòÉΓòÉ 14.2.6. menu ΓòÉΓòÉΓòÉ
  2329.  
  2330. -menu
  2331.  
  2332. This method returns the instance of Menu representing the main menu for the 
  2333. ActionWindow. Creating and deleting this menu can be performed with -createMenu 
  2334. and -destroyMenu. 
  2335.  
  2336.  
  2337. ΓòÉΓòÉΓòÉ 14.2.7. createMenu ΓòÉΓòÉΓòÉ
  2338.  
  2339. -createMenu
  2340.  
  2341. -createMenu will create an instance of Menu having the presentation manager 
  2342. identifier FID_MENU and the flag MS_ACTIONBAR set. 
  2343.  
  2344. The menu can be accessed using -menu. 
  2345.  
  2346.  
  2347. ΓòÉΓòÉΓòÉ 14.2.8. destroyMenu ΓòÉΓòÉΓòÉ
  2348.  
  2349. -destroyMenu
  2350.  
  2351. If a menu was created for this ActionWindow using -createMenu, it is destroyed. 
  2352.  
  2353.  
  2354. ΓòÉΓòÉΓòÉ 14.2.9. setClientWindow: ΓòÉΓòÉΓòÉ
  2355.  
  2356. -setClientWindow: aClient
  2357.  
  2358. -setClientWindow sets the instance variable clientWindow to aClient. 
  2359.  
  2360. Instances of ActionWindow's subclasses StdDialog, StdWindow and MainWindow will 
  2361. cause the clientWindow always to be the same size as the window itself. 
  2362.  
  2363.  
  2364. ΓòÉΓòÉΓòÉ 14.2.10. clientWindow ΓòÉΓòÉΓòÉ
  2365.  
  2366. -clientWindow
  2367.  
  2368. This method returns the value stored in the instance variable clientWindow. 
  2369.  
  2370.  
  2371. ΓòÉΓòÉΓòÉ 14.2.11. performClose: ΓòÉΓòÉΓòÉ
  2372.  
  2373. -performClose: sender
  2374.  
  2375. A WM_CLOSE message is posted to the window. Depending on the subclass of 
  2376. ActionWindow which is used, the window either gets closed (StdDialog and 
  2377. StdWindow) or the application quits (MainWindow). 
  2378.  
  2379. This is an action method, sender is ignored. 
  2380.  
  2381.  
  2382. ΓòÉΓòÉΓòÉ 14.2.12. performQuit: ΓòÉΓòÉΓòÉ
  2383.  
  2384. -performQuit: sender
  2385.  
  2386. WM_QUIT is posted. This normally causes the application to terminate. 
  2387.  
  2388. This method can be used as an action method. sender is ignored. 
  2389.  
  2390.  
  2391. ΓòÉΓòÉΓòÉ 15. AutoCheckBox ΓòÉΓòÉΓòÉ
  2392.  
  2393. Inherits from: Button : FactoryWindow : DelegateWindow : Window : Object 
  2394.  
  2395. Class description: 
  2396.  
  2397. The class AutoCheckBox is a subclass of Button. Its only purpose is to simplify 
  2398. creating a PM Button window for a special purpose. 
  2399.  
  2400. For a short description of an instance of this class see table * . Figure * 
  2401. shows an instance of this class. See the description of the class Button for 
  2402. access methods. 
  2403.  
  2404.  
  2405. ΓòÉΓòÉΓòÉ 15.1. Methods ΓòÉΓòÉΓòÉ
  2406.  
  2407.  
  2408. ΓòÉΓòÉΓòÉ 15.1.1. initWithId: andFlags: in: ΓòÉΓòÉΓòÉ
  2409.  
  2410. -initWithId: (ULONG) anId andFlags: (ULONG) flags in:(Window *) parent
  2411.  
  2412. This method initializes a newly created instance of  AutoCheckBox. Using this 
  2413. class and method is similar to creating a Button object while specifying the 
  2414. flag BS_AUTOCHECKBOX. 
  2415.  
  2416.  
  2417. ΓòÉΓòÉΓòÉ 16. AutoRadioButton ΓòÉΓòÉΓòÉ
  2418.  
  2419. Inherits from: Button : FactoryWindow : DelegateWindow : Window : Object 
  2420.  
  2421. Class description: 
  2422.  
  2423. The class AutoRadioButton is a subclass of Button. Its only purpose is to 
  2424. simplify creating a PM Button window for a special purpose. 
  2425.  
  2426. For a short description of an instance of this class see table * . Figure * 
  2427. shows an instance of this class. See the description of the class Button for 
  2428. access methods. 
  2429.  
  2430.  
  2431. ΓòÉΓòÉΓòÉ 16.1. Methods ΓòÉΓòÉΓòÉ
  2432.  
  2433.  
  2434. ΓòÉΓòÉΓòÉ 16.1.1. initWithId: andFlags: in: ΓòÉΓòÉΓòÉ
  2435.  
  2436. -initWithId: (ULONG) anId andFlags: (ULONG) flags in:(Window *) parent
  2437.  
  2438. This method initializes a newly created instance of  AutoRadioButton. Using 
  2439. this class and method is similar to creating a Button object while specifying 
  2440. the flag  BS_AUTORADIOBUTTON. 
  2441.  
  2442.  
  2443. ΓòÉΓòÉΓòÉ 17. AutoTriStateButton ΓòÉΓòÉΓòÉ
  2444.  
  2445. Inherits from: Button : FactoryWindow : DelegateWindow : Window : Object 
  2446.  
  2447. Class description: 
  2448.  
  2449. The class AutoTriStateButton is a subclass of Button. Its only purpose is to 
  2450. simplify creating a PM Button window for a special purpose. 
  2451.  
  2452. For a short description of an instance of this class see table * . Figure * 
  2453. shows an instance of this class. See the description of the class Button for 
  2454. access methods. 
  2455.  
  2456.  
  2457. ΓòÉΓòÉΓòÉ 17.1. Methods ΓòÉΓòÉΓòÉ
  2458.  
  2459.  
  2460. ΓòÉΓòÉΓòÉ 17.1.1. initWithId: andFlags: in: ΓòÉΓòÉΓòÉ
  2461.  
  2462. -initWithId: (ULONG) anId andFlags: (ULONG) flags in:(Window *) parent
  2463.  
  2464. This method initializes a newly created instance of  AutoTriStateButton. Using 
  2465. this class and method is similar to creating a Button object while specifying 
  2466. the flag  BS_AUTO3STATE. 
  2467.  
  2468.  
  2469. ΓòÉΓòÉΓòÉ 18. Button ΓòÉΓòÉΓòÉ
  2470.  
  2471. Inherits from: FactoryWindow : DelegateWindow : Window : Object 
  2472.  
  2473. Archiving 
  2474.  
  2475. Class description: 
  2476.  
  2477. The Objective C class Button represents a special type of a Window. Instances 
  2478. of this class are normally associated with PM Windows of class WC_BUTTON. The 
  2479. instance methods can be used to set the state of a Button (to simulate a User 
  2480. Action to the Button) or to query the Button's state if it is a  Radiobutton, a 
  2481. Checkbox or a Tri-State Button. 
  2482.  
  2483. Setting and querying the text displayed in the Button can be done using 
  2484. -setText: and -text:. 
  2485.  
  2486. Support for displaying icons instead of a text on a Button is currently not 
  2487. implemented when creating a Button Object "from Scratch", which means by not 
  2488. using a definition for this object in a OS/2 Resource File. 
  2489.  
  2490.  
  2491. ΓòÉΓòÉΓòÉ 18.1. Instance Variables ΓòÉΓòÉΓòÉ
  2492.  
  2493.  
  2494. ΓòÉΓòÉΓòÉ 18.1.1. Commandcommand ΓòÉΓòÉΓòÉ
  2495.  
  2496. This variable is used to store a command binding. The binding consists of a 
  2497. target object set via -setTarget: and an action selector (use -setAction: to 
  2498. set this part). 
  2499.  
  2500. If the button is clicked and a target object and a target action are set, the 
  2501. appropriate method of the target object is called. self is passed as the only 
  2502. parameter to the action. 
  2503.  
  2504. For subclasses of Button this means, that a command is issued, when 
  2505.  
  2506.      a PushButton is pressed, 
  2507.      a RadioButton or AutoRadioButton is put into checked state, a 
  2508.      a CheckBox or AutoCheckBox changes its state either to unchecked or 
  2509.       checked or 
  2510.      a TriStateButton or an AutoTriStateButton changes its state to unchecked, 
  2511.       checked, or indeterminate. 
  2512.  
  2513.  
  2514. ΓòÉΓòÉΓòÉ 18.2. Methods ΓòÉΓòÉΓòÉ
  2515.  
  2516.  
  2517. ΓòÉΓòÉΓòÉ 18.2.1. initWithId: andFlags: in: ΓòÉΓòÉΓòÉ
  2518.  
  2519. -initWithId: (ULONG) anId andFlags: (ULONG) flags in:(Window *) parent
  2520.  
  2521. Using this initializer the programmer can create a new Button in an existing 
  2522. parent window. anId is the PM id of the button to be created, flags specify the 
  2523. creation flags for the Button control (BS_xxxx and WS_xxxx constants). parent 
  2524. is the parent window of the newly created Button, which normally is either an 
  2525. instance of StdDialog or StdWindow. 
  2526.  
  2527. After creation of the Button the size can be set via  -setSize:::: and the text 
  2528. to be displayed via -setText:. 
  2529.  
  2530. Association to an existing PM Button Window should be done by using associate:. 
  2531.  
  2532. A newly created Button Object is not automatically inserted as a child window 
  2533. of its parent. Use [parent insertChild: button] where parent is the parent 
  2534. window and button is the newly created Button Object. 
  2535.  
  2536. The following table list all possible BS_xxxx styles and a short description of 
  2537. these. 
  2538.  
  2539. First the primary Button styles, which define the type of the Button. One of 
  2540. these must be given. All other style options in the following tables can be 
  2541. combined with one of the primary style via logical OR. Tables * (page *), * 
  2542. (page *), * (page *) and * (page *). 
  2543.  
  2544. Figure * on page * shows the look of the main Button styles. 
  2545.  
  2546. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2547. Γöé Flag               Γöé Description                            Γöé
  2548. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2549. ΓöéBS_PUSHBUTTON       ΓöéThe created Button will be a Pushbutton.Γöé
  2550. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2551. ΓöéBS_CHECKBOX         ΓöéThe Button will be a Checkbox.          Γöé
  2552. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2553. ΓöéBS_AUTOCHECKBOX     ΓöéThe Button will be an AutoCheckbox, thisΓöé
  2554. Γöé                    Γöéone toggles its state every time the    Γöé
  2555. Γöé                    Γöéuser clicks on the Button.              Γöé
  2556. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2557. ΓöéBS_RADIOBUTTON      ΓöéThe Button will be a Radiobutton. In    Γöé
  2558. Γöé                    Γöécontrast to Checkboxes, a dot appears ifΓöé
  2559. Γöé                    Γöéthe Button is checked.                  Γöé
  2560. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2561. ΓöéBS_AUTORADIOBUTTON  ΓöéIn addition to a normal radio button an Γöé
  2562. Γöé                    ΓöéAutoRadiobutton automatically unchecks  Γöé
  2563. Γöé                    Γöéall other radio buttons in the same     Γöé
  2564. Γöé                    Γöégroup if it is checked.                 Γöé
  2565. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2566. ΓöéBS_3STATE           ΓöéA Tri-state button has an additional    Γöé
  2567. Γöé                    Γöécheck state, which is called            Γöé
  2568. Γöé                    Γöéindeterminate.                          Γöé
  2569. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2570. ΓöéBS_AUTO3STATE       Γöésame as AutoCheckbox, but Tri-state     Γöé
  2571. Γöé                    ΓöéButton.                                 Γöé
  2572. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2573. ΓöéBS_USERBUTTON       ΓöéThe button created will be an           Γöé
  2574. Γöé                    Γöéapplication-defined button. It has to beΓöé
  2575. Γöé                    Γöédrawn by the application when a BN_PAINTΓöé
  2576. Γöé                    Γöémessage is received by the parent       Γöé
  2577. Γöé                    Γöéwindow.                                 Γöé
  2578. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2579.  
  2580. Main button styles used to define the type of button 
  2581.  
  2582.  
  2583.  
  2584. This figure shows (from left to right) the following
  2585. Buttons types:Pushbutton, Radiobutton,  Checkbox and Tri-state Button.
  2586.  
  2587. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2588. Γöé Flag               Γöé Description                            Γöé
  2589. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2590. ΓöéBS_NOCURSORSELECT   ΓöéThe radio button is not selected when itΓöé
  2591. Γöé                    Γöéis given the focus from keyboard        Γöé
  2592. Γöé                    Γöéactions.                                Γöé
  2593. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2594.  
  2595. Button styles which can be combined with an AutoRadioButton 
  2596.  
  2597. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2598. Γöé Flag               Γöé Description                            Γöé
  2599. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2600. ΓöéBS_HELP             ΓöéInstead of posting a command message (  Γöé
  2601. Γöé                    ΓöéWM_COMMAND), a help message is posted ( Γöé
  2602. Γöé                    ΓöéWM_HELP).                               Γöé
  2603. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2604. ΓöéBS_SYSCOMMAND       ΓöéWhen this style is set, a WM_SYSCOMMAND Γöé
  2605. Γöé                    Γöémessage is posted instead of a command  Γöé
  2606. Γöé                    Γöémessage (WM_COMMAND).                   Γöé
  2607. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2608. ΓöéBS_NOBORDER         ΓöéThe push button does not have a drawn   Γöé
  2609. Γöé                    Γöéborder.                                 Γöé
  2610. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2611.  
  2612. Button styles which can be combined with a PushButton 
  2613.  
  2614. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2615. Γöé Flag               Γöé Description                            Γöé
  2616. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2617. ΓöéBS_DEFAULT          ΓöéOnly one button per window should have  Γöé
  2618. Γöé                    Γöéthis style set. In dialogs this button  Γöé
  2619. Γöé                    Γöéis automatically pushed whenever the    Γöé
  2620. Γöé                    Γöéuser presses the Enter key.             Γöé
  2621. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2622.  
  2623. Button styles which can be combined with a PushButton or a user button control 
  2624.  
  2625.  
  2626. ΓòÉΓòÉΓòÉ 18.2.2. clickdown ΓòÉΓòÉΓòÉ
  2627.  
  2628. -clickdown
  2629.  
  2630. By calling this method a click down with the left mouse button is simulated for 
  2631. this Button. 
  2632.  
  2633.  
  2634. ΓòÉΓòÉΓòÉ 18.2.3. clickup ΓòÉΓòÉΓòÉ
  2635.  
  2636. -clickup
  2637.  
  2638. -clickup simulates---as a counterpart to -clickdown---a release of the left 
  2639. mouse button when the mouse pointer is in the Button ("Click Up"). 
  2640.  
  2641.  
  2642. ΓòÉΓòÉΓòÉ 18.2.4. checked ΓòÉΓòÉΓòÉ
  2643.  
  2644. -(ULONG) checked
  2645.  
  2646. -checked queries the check state of the Button if it is a  Radiobutton, a 
  2647. Checkbox or a Tri-State Button. 
  2648.  
  2649. This method returns 0 if the Button is in unchecked state, 1 when in checked 
  2650. state and 2 when in indeterminate state. 
  2651.  
  2652.  
  2653. ΓòÉΓòÉΓòÉ 18.2.5. highlighted ΓòÉΓòÉΓòÉ
  2654.  
  2655. -(BOOL) highlighted
  2656.  
  2657. The result of -highlighted is YES if the current state of the Button is 
  2658. highlighted, NO otherwise. 
  2659.  
  2660.  
  2661. ΓòÉΓòÉΓòÉ 18.2.6. check ΓòÉΓòÉΓòÉ
  2662.  
  2663. -check
  2664.  
  2665. -check sets the checked state of the Button. 
  2666.  
  2667.  
  2668. ΓòÉΓòÉΓòÉ 18.2.7. checkIndeterminate ΓòÉΓòÉΓòÉ
  2669.  
  2670. -checkIndeterminate
  2671.  
  2672. -checkIndeterminate sets the indeterminate state of the Button. 
  2673.  
  2674.  
  2675. ΓòÉΓòÉΓòÉ 18.2.8. uncheck ΓòÉΓòÉΓòÉ
  2676.  
  2677. -uncheck
  2678.  
  2679. -uncheck sets the unchecked state of the Button. 
  2680.  
  2681.  
  2682. ΓòÉΓòÉΓòÉ 18.2.9. text: ΓòÉΓòÉΓòÉ
  2683.  
  2684. -(char *) text: (char *) buffer
  2685.  
  2686. This method returns the button text. Defining the short-cut character by 
  2687. prefixing it with a tilde (~) is preserved. 
  2688.  
  2689. If buffer is NULL, enough memory will be allocated to store the title string. 
  2690. This memory area must be freed after using it by calling the C library function 
  2691. free(). 
  2692.  
  2693. On success, a pointer to buffer or a newly allocated buffer area is returned. 
  2694.  
  2695.  
  2696. ΓòÉΓòÉΓòÉ 18.2.10. setText: ΓòÉΓòÉΓòÉ
  2697.  
  2698. -setText: (char *) buffer
  2699.  
  2700. Set the title text of the Button to buffer. 
  2701.  
  2702. self is returned. 
  2703.  
  2704.  
  2705. ΓòÉΓòÉΓòÉ 18.2.11. setTarget: ΓòÉΓòÉΓòÉ
  2706.  
  2707. -setTarget: aTarget
  2708.  
  2709. This method sets the target object of the button control (see the instance 
  2710. variable command) to aTarget. 
  2711.  
  2712. The binding is activated as soon as the target object is set to a non-nil 
  2713. value. Therefore you should always set the action method (-setAction:) first. 
  2714.  
  2715. To disable a command binding, simply set the target object to nil e.g. using 
  2716.  
  2717. [button setTarget: nil];
  2718.  
  2719.  
  2720. ΓòÉΓòÉΓòÉ 18.2.12. setAction: ΓòÉΓòÉΓòÉ
  2721.  
  2722. -setAction: (SEL) anAction
  2723.  
  2724. The action method stored in commandis set to anAction. 
  2725.  
  2726.  
  2727. ΓòÉΓòÉΓòÉ 18.2.13. bindWith: selector: ΓòÉΓòÉΓòÉ
  2728.  
  2729. -bindWith: anObject selector: (SEL) aSel
  2730.  
  2731. This method is just a short-cut for using 
  2732.  
  2733. [button setAction: aSel];
  2734. [button setTarget: anObject];
  2735.  
  2736.  
  2737. ΓòÉΓòÉΓòÉ 18.2.14. handleMessage: withParams: and: ΓòÉΓòÉΓòÉ
  2738.  
  2739. -(MRESULT) handleMessage: (ULONG) msg withParams:(MPARAM) mp1 and: (MPARAM) mp2
  2740.  
  2741. This message-handling function is used to directly call the specified action 
  2742. method of the target object whenever the button is pressed. A pointer to the 
  2743. button is passed as the only parameter to the action. 
  2744.  
  2745. The target-action binding is assumed to exist if the target object has been set 
  2746. either by using -setTarget: or by -bindWith: selector:. 
  2747.  
  2748.  
  2749. ΓòÉΓòÉΓòÉ 19. CheckBox ΓòÉΓòÉΓòÉ
  2750.  
  2751. Inherits from: Button : FactoryWindow : DelegateWindow : Window : Object 
  2752.  
  2753. Class description: 
  2754.  
  2755. The class CheckBox is a subclass of Button. Its only purpose is to simplify 
  2756. creating a PM Button window for a special purpose. 
  2757.  
  2758.  
  2759. ΓòÉΓòÉΓòÉ 19.1. Methods ΓòÉΓòÉΓòÉ
  2760.  
  2761.  
  2762. ΓòÉΓòÉΓòÉ 19.1.1. initWithId: andFlags: in: ΓòÉΓòÉΓòÉ
  2763.  
  2764. -initWithId: (ULONG) anId andFlags: (ULONG) flags in:(Window *) parent
  2765.  
  2766. This method initializes a newly created instance of CheckBox. Using this class 
  2767. and method is similar to creating a Button object while specifying the flag 
  2768. BS_CHECKBOX. 
  2769.  
  2770.  
  2771. ΓòÉΓòÉΓòÉ 20. ComboBox ΓòÉΓòÉΓòÉ
  2772.  
  2773. Inherits from: ListBox : FactoryWindow : DelegateWindow : Window : Object 
  2774.  
  2775. Class description: 
  2776.  
  2777. CombobBox is a class designed to provide an interface to OS/2 PM windows of 
  2778. class WC_COMBOBOX. 
  2779.  
  2780. A ComboBox consists of a EntryField and a ListBox. Access to the text in the 
  2781. EntryField is provided via  setText: and text:. The items in the ListBox can be 
  2782. accessed by using the inherited methods of the superclass  ListBox. 
  2783.  
  2784.  
  2785. ΓòÉΓòÉΓòÉ 20.1. Methods ΓòÉΓòÉΓòÉ
  2786.  
  2787.  
  2788. ΓòÉΓòÉΓòÉ 20.1.1. initWithId: andFlags: in: ΓòÉΓòÉΓòÉ
  2789.  
  2790. -initWithId: (ULONG) anId andFlags: (ULONG) flags in:(Window *) parent
  2791.  
  2792. Using this method, a previously allocated instance of ComboBox is initialized. 
  2793. anId is the OS/2 window identifier of the object to be initialized, flags are 
  2794. the window flags to use (see table *), which can be a combination of one of the 
  2795. flags special to Combo boxes or general window flags (e.g. WS_VISIBLE). 
  2796.  
  2797. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2798. Γöé Flag               Γöé Description                            Γöé
  2799. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2800. ΓöéCBS_SIMPLE          Γöéif this flag is specified, the entry    Γöé
  2801. Γöé                    Γöéfield and the list box are visible at   Γöé
  2802. Γöé                    Γöéany time.                               Γöé
  2803. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2804. ΓöéCBS_DROPDOWN        ΓöéThis flag causes the list box only to beΓöé
  2805. Γöé                    Γöédisplayed when requested by the user.   Γöé
  2806. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2807. ΓöéCBS_DROPDOWNLIST    ΓöéCBS_DROPDOWNLIST should be used, if the Γöé
  2808. Γöé                    Γöéonly valid entries in the entry field   Γöé
  2809. Γöé                    Γöéare items already shown in the list box.Γöé
  2810. Γöé                    ΓöéHere the list box is only displayed on  Γöé
  2811. Γöé                    Γöéuser demand, and the entry field        Γöé
  2812. Γöé                    Γöédisplays one of the list box items. It  Γöé
  2813. Γöé                    Γöéis not editable.                        Γöé
  2814. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2815.  
  2816. Combo box control styles 
  2817.  
  2818.  
  2819.  
  2820. Combo Box controls (simple and dropdown)
  2821.  
  2822. As in all other initWithId: andFlags: in: methods, parent is a pointer to the 
  2823. parent window, which must be an instance of Window or one of its subclasses. 
  2824.  
  2825. Figure * shows two combo boxes. The left one was created using CBS_SIMPLE, the 
  2826. right one using the flag CBS_DROPDOWN. Using CBS_DROPDOWNLIST would have the 
  2827. same apperance as the right combo box. 
  2828.  
  2829.  
  2830. ΓòÉΓòÉΓòÉ 20.1.2. entryField ΓòÉΓòÉΓòÉ
  2831.  
  2832. -(HWND) entryField
  2833.  
  2834. This method returns the window handle (type HWND) of the entry field control. 
  2835.  
  2836.  
  2837. ΓòÉΓòÉΓòÉ 20.1.3. listBox ΓòÉΓòÉΓòÉ
  2838.  
  2839. -(HWND) listBox
  2840.  
  2841. This method returns the window handle (type HWND) of the listbox control. 
  2842.  
  2843.  
  2844. ΓòÉΓòÉΓòÉ 21. Container ΓòÉΓòÉΓòÉ
  2845.  
  2846. Inherits from: FactoryWindow : DelegateWindow : Window : Object 
  2847.  
  2848. Archiving 
  2849.  
  2850. Class description: 
  2851.  
  2852. The OS/2 container class is one of the most flexible user interface classes 
  2853. provided by the OS/2 API. Because of its flexibility, there's a lot of work to 
  2854. do for the application programmer, before he can use a container object in his 
  2855. programs successfully. The Objective C class Container was created to simplify 
  2856. the handling of the API functions concerning this PM class. 
  2857.  
  2858. Information concerning this specific PM class and how to use it in standard C 
  2859. programs can be found in * . This series of articles is part of EDM/2 and can 
  2860. be obtained via anonymous ftp from hobbes.nmsu.edu and many other sites which 
  2861. provide OS/2 software. 
  2862.  
  2863. Instances of this class are designed to store Objective C objects as data. So 
  2864. anything you can encapsulate in an Objective C class definition can be stored 
  2865. in container objects. 
  2866.  
  2867. Don't forget to specify CCS_MINIRECORDCORE at initialization. Only this style 
  2868. is supported at the moment. 
  2869.  
  2870. When using detail's view, the objects inserted must conform to the protocol 
  2871. ContainerItem. 
  2872.  
  2873. To insert single container items, use 
  2874.  
  2875.      -insertObject:, 
  2876.      -insertObject: withTitle: and 
  2877.      -insertObject: withTitle: andIcon:. 
  2878.  
  2879.  Because inserting many objects using these methods is quite slow, methods for 
  2880.  inserting many objects at once are provided. These are 
  2881.  
  2882.      -insertObjectList:, 
  2883.      -insertObjectList: withTitles: and 
  2884.      -insertObjectList: withTitles: andIcon:. 
  2885.  
  2886.  Methods to arrange the container objects in the tree view as known from the 
  2887.  workplace shell's directory folders have also been implemented. 
  2888.  
  2889.      -insertObject: parent:, 
  2890.      -insertObject: withTitle: parent: and 
  2891.      -insertObject: withTitle: andIcon: parent: 
  2892.  
  2893.  will only insert single objects at the moment. 
  2894.  
  2895.  
  2896. ΓòÉΓòÉΓòÉ 21.1. Instance Variables ΓòÉΓòÉΓòÉ
  2897.  
  2898.  
  2899. ΓòÉΓòÉΓòÉ 21.1.1. ULONGcreateFlags ΓòÉΓòÉΓòÉ
  2900.  
  2901. This instance variable is used to store the creation flags specified at 
  2902. initialization using initWithId: andFlags: in:. This will be used in later 
  2903. releases of this library to correctly store the state of the object in a stream 
  2904. to be able to load it afterwards. 
  2905.  
  2906.  
  2907. ΓòÉΓòÉΓòÉ 21.1.2. CONTAINER_MINIREC *recordBuffer ΓòÉΓòÉΓòÉ
  2908.  
  2909. recordBuffer is used as an internal buffer variable. Many of the methods 
  2910. described later store temporary data in this variable. 
  2911.  
  2912.  
  2913. ΓòÉΓòÉΓòÉ 21.1.3. FIELDINFO *columnBuffer ΓòÉΓòÉΓòÉ
  2914.  
  2915. Again, columnBuffer is an internal buffer variable used by some of the methods 
  2916. for querying column information in detail's view. 
  2917.  
  2918.  
  2919. ΓòÉΓòÉΓòÉ 21.2. Methods ΓòÉΓòÉΓòÉ
  2920.  
  2921.  
  2922. ΓòÉΓòÉΓòÉ 21.2.1. initWithId: andFlags: in: ΓòÉΓòÉΓòÉ
  2923.  
  2924. -initWithId: (ULONG) anId andFlags: (ULONG) flags in:(Window *) parent
  2925.  
  2926. Using this method, a newly created instance of Container gets initialized. The 
  2927. parameter anId is the PM identifier of the window, which is created. parent is 
  2928. a pointer to the parent window (normally an instance of Window or one of its 
  2929. subclasses) of this instance. flags is used to pass creation flags to the 
  2930. container window. The flags which can be used in addition to the standard 
  2931. creation flags (e.g. WS_VISIBLE) can be logically grouped. Tables * and * 
  2932. shortly describe the flags specific to container controls. 
  2933.  
  2934. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2935. Γöé Flag               Γöé Description                            Γöé
  2936. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2937. ΓöéCCS_AUTOPOSITION    ΓöéIf this flag is specified, whenever     Γöé
  2938. Γöé                    Γöénecessary, the container automatically  Γöé
  2939. Γöé                    Γöérepositions the items displayed in the  Γöé
  2940. Γöé                    Γöécontainer.                              Γöé
  2941. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2942. ΓöéCCS_MINIRECORDCORE  ΓöéThis flag specifies that the informationΓöé
  2943. Γöé                    Γöéstored in the container should consist  Γöé
  2944. Γöé                    Γöéof items of the datatype MINIRECORDCORE.Γöé
  2945. Γöé                    ΓöéThis flag must be specified at the      Γöé
  2946. Γöé                    Γöémoment.                                 Γöé
  2947. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2948. ΓöéCCS_READONLY        ΓöéSpecifying this flag causes all items inΓöé
  2949. Γöé                    Γöéthe container to be read-only. If you   Γöé
  2950. Γöé                    Γöéwant only some of the information       Γöé
  2951. Γöé                    Γöédisplayed to be read-only, use          Γöé
  2952. Γöé                    Γöé-setColumnTitleAttributes: or           Γöé
  2953. Γöé                    Γöé-setColumnDataAttributes:.              Γöé
  2954. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2955. ΓöéCCS_VERIFYPOINTERS  ΓöéSetting this flag ensures that all      Γöé
  2956. Γöé                    Γöéapplication pointers used are members ofΓöé
  2957. Γöé                    Γöéa linked list stored internally in the  Γöé
  2958. Γöé                    Γöécontainer. This flag should not only be Γöé
  2959. Γöé                    Γöéused for debugging purposes. Using this Γöé
  2960. Γöé                    Γöéfeature decreases response time of the  Γöé
  2961. Γöé                    Γöécontainer object.                       Γöé
  2962. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2963.  
  2964. Global container creation styles 
  2965.  
  2966. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2967. Γöé Flag               Γöé Description                            Γöé
  2968. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2969. ΓöéCCS_SINGLESEL       ΓöéOnly selection of a single item is      Γöé
  2970. Γöé                    Γöéallowed.                                Γöé
  2971. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2972. ΓöéCCS_EXTENDEDSEL     ΓöéEnable extended selection of the        Γöé
  2973. Γöé                    Γöécontainer.                              Γöé
  2974. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2975. ΓöéCCS_MULTIPLESEL     ΓöéEnable multiple selection.              Γöé
  2976. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2977.  
  2978. Container creation styles concerning selection 
  2979.  
  2980.  
  2981. ΓòÉΓòÉΓòÉ 21.2.2. addColumn: ΓòÉΓòÉΓòÉ
  2982.  
  2983. -addColumn: (char *) aTitle
  2984.  
  2985. When in detail's view, the container displays data in multiple columns. This 
  2986. method can be used to add a new column at run-time. aTitle is the title text of 
  2987. the column which is shown if this feature is enabled. 
  2988.  
  2989.  
  2990. ΓòÉΓòÉΓòÉ 21.2.3. insertObject: ΓòÉΓòÉΓòÉ
  2991.  
  2992. -insertObject: anObject
  2993.  
  2994. -insertObject: inserts a new object into the container. anObject must be an 
  2995. allocated and initialized Objective C object. The title text of the newly 
  2996. inserted object is empty, the application uses the clock pointer (SPTR_WAIT) as 
  2997. the icon to be displayed. 
  2998.  
  2999.  
  3000.  
  3001. Container window in icon view showing objects created
  3002. with the different insertObject: methods
  3003.  
  3004. This method is preferred for inserting new objects into a container when in 
  3005. detail's view, where it doesn't matter, which icon or title is displayed. 
  3006.  
  3007. Figure * shows a cotainer window in icon view. The leftmost object was inserted 
  3008. using -insertObject:. 
  3009.  
  3010. When in one of the other container views, consider using -insertObject: 
  3011. withTitle: or -insertObject: withTitle: andIcon:. 
  3012.  
  3013. When removed from the container object, the objects are not freed. You have to 
  3014. do this by yourself. 
  3015.  
  3016.  
  3017. ΓòÉΓòÉΓòÉ 21.2.4. insertObject: withTitle: ΓòÉΓòÉΓòÉ
  3018.  
  3019. -insertObject: anObject withTitle: (const char *) aTitle
  3020.  
  3021. Just as with -insertObject: a new object is inserted into the container. aTitle 
  3022. specifies the title text to be displayed. This method should be used if the 
  3023. container is in text view. The clock pointer is used as icon. 
  3024.  
  3025. Figure * shows a cotainer window in icon view. The middle object was inserted 
  3026. using -insertObject: withTitle:. 
  3027.  
  3028. After inserting the object into the container, the memory block pointed to by 
  3029. aTitle can be reused in some other way. 
  3030.  
  3031.  
  3032. ΓòÉΓòÉΓòÉ 21.2.5. insertObject: withTitle: andIcon: ΓòÉΓòÉΓòÉ
  3033.  
  3034. -insertObject: anObject withTitle: (const char *) aTitleandIcon: (ULONG) anIcon
  3035.  
  3036. Using -insertObject: withTitle: andIcon: the application programmer has full 
  3037. control over the data displayed in any of the views. anObject is a pointer to 
  3038. the Objective C object, which shall be inserted into the container. 
  3039.  
  3040. The title text of the item is specified via aTitle, a resource handle of the 
  3041. icon (as can be queried using WinQuerySysPointer ()) is specified in anIcon. 
  3042.  
  3043. Use this method for inserting new objects when in icon view or tree view, of if 
  3044. you plan to change the view of the container at run-time to one of these. 
  3045.  
  3046. Figure * shows a cotainer window in icon view. The object to the right was 
  3047. inserted using -insertObject: withTitle: andIcon:. 
  3048.  
  3049.  
  3050. ΓòÉΓòÉΓòÉ 21.2.6. insertObjectList: ΓòÉΓòÉΓòÉ
  3051.  
  3052. -insertObjectList: aList
  3053.  
  3054. Because inserting many objects one by one using the methods with names starting 
  3055. with -insertObject: is really slow, corresponding methods for inserting a list 
  3056. of objects are provided. 
  3057.  
  3058. -insertObjectList: corresponds to inserting a list of objects using 
  3059. -insertObject:. aList is a pointer to some list object which must be an 
  3060. instance of either SimpleList or KeyedList (see pages sec:SimpleList and 
  3061. sec:KeyedList for more information on these classes). 
  3062.  
  3063.  
  3064. ΓòÉΓòÉΓòÉ 21.2.7. insertObjectList: withTitles: ΓòÉΓòÉΓòÉ
  3065.  
  3066. -insertObjectList: aList withTitles:titleList
  3067.  
  3068. -insertObjectList: withTitles: will insert a list of objects stored in aList 
  3069. into the container object. The titles for these objects must be stored in the 
  3070. list called titleList. 
  3071.  
  3072. Every single title must be an object implementing the method -stringValue for 
  3073. access to the title string. -stringValue has to return a pointer to a string 
  3074. (char *). This should be a pointer to the memory area the string is stored 
  3075. internally by the object. 
  3076.  
  3077. Do not allocate a new memory block when -stringValue is called. The memory will 
  3078. not be freed by the container object. 
  3079.  
  3080. In the utility library objcutil.a a class suitable for this task is already 
  3081. provided. This class is called String. See Section sec:String on Page 
  3082. sec:String for a description of the class and its instance methods. 
  3083.  
  3084.  
  3085. ΓòÉΓòÉΓòÉ 21.2.8. insertObjectList: withTitles: andIcon: ΓòÉΓòÉΓòÉ
  3086.  
  3087. -insertObjectList: aList withTitles: titleList andIcon:(ULONG) anIcon
  3088.  
  3089. This method will insert a list of objects aList with the titles stored in 
  3090. titleList into the container object. 
  3091.  
  3092. The icon resource specified by anIcon is used for display of the objects. 
  3093.  
  3094.  
  3095. ΓòÉΓòÉΓòÉ 21.2.9. insertObject: parent: ΓòÉΓòÉΓòÉ
  3096.  
  3097. -insertObject: anObject parent:parentObject
  3098.  
  3099. To establish a hierarchical ordering of the objects displayed in the 
  3100. container's tree view you must use either this method or one of the next two to 
  3101. insert objects. 
  3102.  
  3103. -insertObject: parent: will insert an object anObject into the container 
  3104. control. The object is inserted as the last child object of parentObject. 
  3105. parentObject can either be nil, which causes the object to be inserted at the 
  3106. top level, or a pointer to an object already existing in the container. 
  3107.  
  3108.  
  3109. ΓòÉΓòÉΓòÉ 21.2.10. insertObject: withTitle: parent: ΓòÉΓòÉΓòÉ
  3110.  
  3111. -insertObject: anObject withTitle: (char *) aTitleparent: parentObject
  3112.  
  3113. Just alike -insertObject: withTitle: this method inserts a single object 
  3114. anObject into the container control. aTitle is used as the title of the object. 
  3115. parentObject is the parent of the object as shown in the container's tree view. 
  3116.  
  3117.  
  3118. ΓòÉΓòÉΓòÉ 21.2.11. insertObject: ΓòÉΓòÉΓòÉ
  3119.  
  3120. withTitle: andIcon: parent: 
  3121.  
  3122. -insertObject: anObject withTitle: (char *) aTitleandIcon: (ULONG) anIcon parent: parentObject
  3123.  
  3124. To insert an object anObject having the title aTitle and an icon specified by 
  3125. anIcon into the container object use this method. 
  3126.  
  3127. Just as with the last two methods, parent must be either nil or a pointer to an 
  3128. object already stored in the container control. In the first case, the anObject 
  3129. will be inserted at the top level, in the latter case anObject will be the last 
  3130. child object of parentWindow. 
  3131.  
  3132.  
  3133. ΓòÉΓòÉΓòÉ 21.2.12. arrange ΓòÉΓòÉΓòÉ
  3134.  
  3135. -arrange
  3136.  
  3137. This method causes the items currently stored in the container to be 
  3138. rearranged. This can be necessary after inserting some new items into the 
  3139. container. 
  3140.  
  3141. If you plan to insert many items, don't call this method after inserting each 
  3142. of them, only after inserting all of them. 
  3143.  
  3144.  
  3145. ΓòÉΓòÉΓòÉ 21.2.13. iconView: ΓòÉΓòÉΓòÉ
  3146.  
  3147. -iconView: sender
  3148.  
  3149. Using this method sets the display mode of the container window to icon view. 
  3150. The parameter sender is ignored. It can be specified as nil or self. 
  3151.  
  3152.  
  3153. ΓòÉΓòÉΓòÉ 21.2.14. nameView: ΓòÉΓòÉΓòÉ
  3154.  
  3155. -nameView: sender
  3156.  
  3157. Using this method sets the display mode of the container window to name view. 
  3158. The parameter sender is ignored. It can be specified as nil or self. 
  3159.  
  3160.  
  3161. ΓòÉΓòÉΓòÉ 21.2.15. textView: ΓòÉΓòÉΓòÉ
  3162.  
  3163. -textView: sender
  3164.  
  3165. Using this method sets the display mode of the container window to text view. 
  3166. The parameter sender is ignored. It can be specified as nil or self. 
  3167.  
  3168.  
  3169. ΓòÉΓòÉΓòÉ 21.2.16. treeView: ΓòÉΓòÉΓòÉ
  3170.  
  3171. -treeView: sender
  3172.  
  3173. Using this method sets the display mode of the container window to tree view. 
  3174. The parameter sender is ignored. It can be specified as nil or self. 
  3175.  
  3176. To use tree view the objects should be inserted using -insertObject: parent:, 
  3177. -insertObject: withTitle: parent: or -insertObject: withTitle: andIcon: 
  3178. parent:. 
  3179.  
  3180.  
  3181.  
  3182. Container window in details view. The second record is
  3183. selected.
  3184.  
  3185.  
  3186. ΓòÉΓòÉΓòÉ 21.2.17. detailView: ΓòÉΓòÉΓòÉ
  3187.  
  3188. -detailView: sender
  3189.  
  3190. Using this method sets the display mode of the container window to detail view. 
  3191. The parameter sender is ignored. It can be specified as nil or self. 
  3192.  
  3193. Figure * shows a container window in detail's view. It holds three records, 
  3194. each of them consisting of two columns. The second record is selected. Notice, 
  3195. that the second column of the second record holds an entry taking up multiple 
  3196. lines. 
  3197.  
  3198.  
  3199. ΓòÉΓòÉΓòÉ 21.2.18. records ΓòÉΓòÉΓòÉ
  3200.  
  3201. -(ULONG) records
  3202.  
  3203. -records queries the number of items currently stored in the container. The 
  3204. number of items (records) is returned. 
  3205.  
  3206.  
  3207. ΓòÉΓòÉΓòÉ 21.2.19. object ΓòÉΓòÉΓòÉ
  3208.  
  3209. -object
  3210.  
  3211. This method returns a pointer to the object of the current record. The current 
  3212. record is set using the methods -firstRecord, -lastRecord, -nextRecord, 
  3213. -previousRecord, -firstSelected and -nextSelected. 
  3214.  
  3215.  
  3216. ΓòÉΓòÉΓòÉ 21.2.20. findRecord: ΓòÉΓòÉΓòÉ
  3217.  
  3218. -(CONTAINER_MINIREC *) findRecord:anObject
  3219.  
  3220. If you want to modify the (display) properties of a single record and only know 
  3221. a pointer to the object, you can use -findRecord: to retrieve a pointer to the 
  3222. associated (CONTAINER_MINIREC) structure. 
  3223.  
  3224. -findRecord: returns NULL, if the object anObject could not be found in the 
  3225. container, a pointer to the record structure otherwise. 
  3226.  
  3227. The record is searched for by a simple incremental search. To determine, if an 
  3228. object has been found, the -isEqual: method of every object is used. 
  3229.  
  3230. The default implementation of -isEqual: will return YES only if the two objects 
  3231. are the same one, i.e., if the pointer to the first object is equal to the 
  3232. pointer to the second object. 
  3233.  
  3234. Some objects in the libraries, e.g. instances of String, will use a more 
  3235. content-sensitive implementation. For String objects, two objects are thought 
  3236. to be equal, if the string stored in both of them is the same. 
  3237.  
  3238. You should implement -isEqual: and -compare: methods for your own classes if 
  3239. you plan to use some kind of content-sensitive comparisons. This would be the 
  3240. cleanest way to do this with Objective C. 
  3241.  
  3242.  
  3243. ΓòÉΓòÉΓòÉ 21.2.21. firstRecord ΓòÉΓòÉΓòÉ
  3244.  
  3245. -(CONTAINER_MINIREC *) firstRecord
  3246.  
  3247. This method retrieves the first record in the container. A pointer to the data 
  3248. struction CONTAINER_MINIREC, which is used to store the data internally, is 
  3249. returned. The data of the record can be accessed using -object. It is stored in 
  3250. recordBuffer. 
  3251.  
  3252. If you want to visit every record, consider using the following piece of code: 
  3253.  
  3254. .
  3255. .
  3256. if ([container firstRecord]) {
  3257. do {
  3258. /* specific manipulations */
  3259. /* for each record go here */
  3260. } while ([container nextRecord]);
  3261. }
  3262. .
  3263. .
  3264.  
  3265. Here, the container object is assumed to be stored in a variable called 
  3266. container. The specific code for manipulating or querying each record is put in 
  3267. the do loop. 
  3268.  
  3269. -firstRecord returns a pointer to the CONTAINER_MINIREC structure of the first 
  3270. record, if none exists, NULL is returned. 
  3271.  
  3272.  
  3273. ΓòÉΓòÉΓòÉ 21.2.22. lastRecord ΓòÉΓòÉΓòÉ
  3274.  
  3275. -(CONTAINER_MINIREC *) lastRecord
  3276.  
  3277. In contrast to -firstRecord, this method searches for the last record stored in 
  3278. the container. If none is found, NULL is returned, otherwise a pointer to the 
  3279. CONTAINER_MINIREC structure of the last record. 
  3280.  
  3281. Visiting all records, starting at the end can be accomplished using this piece 
  3282. of code. 
  3283.  
  3284. .
  3285. .
  3286. if ([container lastRecord]) {
  3287. do {
  3288. /* specific manipulations */
  3289. /* for each record go here */
  3290. } while ([container previousRecord]);
  3291. }
  3292. .
  3293. .
  3294.  
  3295. The variables have the same meaning as shown before in -firstRecord. 
  3296.  
  3297.  
  3298. ΓòÉΓòÉΓòÉ 21.2.23. nextRecord ΓòÉΓòÉΓòÉ
  3299.  
  3300. -(CONTAINER_MINIREC *) nextRecord
  3301.  
  3302. This method queries the next record. The search must have been initialized 
  3303. using -firstRecord. 
  3304.  
  3305. As -firstRecord, this method returns a pointer to the appropriate 
  3306. CONTAINER_MINIREC structure for the next record or NULL, if none exists. 
  3307.  
  3308.  
  3309. ΓòÉΓòÉΓòÉ 21.2.24. previousRecord ΓòÉΓòÉΓòÉ
  3310.  
  3311. -(CONTAINER_MINIREC *) previousRecord
  3312.  
  3313. This method queries the previous record. The search must have been initialized 
  3314. using -lastRecord. 
  3315.  
  3316. As -lastRecord, this method returns a pointer to the appropriate 
  3317. CONTAINER_MINIREC structure for the previous record or NULL, if none exists. 
  3318.  
  3319.  
  3320. ΓòÉΓòÉΓòÉ 21.2.25. childRecord ΓòÉΓòÉΓòÉ
  3321.  
  3322. -(CONTAINER_MINIREC *) childRecord
  3323.  
  3324. -childRecord returns a pointer to the record structure for the child record of 
  3325. the selected record or NULL, if there is no child. 
  3326.  
  3327. Be careful, calling this method will also set the instance variable 
  3328. recordBuffer anew. Using -findNext or findPrevious will from now on search the 
  3329. list of child records. 
  3330.  
  3331. To visit every child record, you first have to descend into the child level and 
  3332. then use -nextRecord to visit all children of the current record. Use 
  3333. -parentRecord to leave the child level and go back to the parent level. 
  3334.  
  3335.  
  3336. ΓòÉΓòÉΓòÉ 21.2.26. parentRecord ΓòÉΓòÉΓòÉ
  3337.  
  3338. -(CONTAINER_MINIREC *) parentRecord
  3339.  
  3340. -parentRecord returns a pointer to the record structure for the parent record 
  3341. of the selected record or NULL, if the record is at the top level of the 
  3342. hierarchy. 
  3343.  
  3344. Be careful, calling this method will also set the instance variable 
  3345. recordBuffer anew. Using -findNext or findPrevious will from now on search the 
  3346. list of records in the upper level. 
  3347.  
  3348.  
  3349. ΓòÉΓòÉΓòÉ 21.2.27. firstSelected ΓòÉΓòÉΓòÉ
  3350.  
  3351. -(CONTAINER_MINIREC *) firstSelected
  3352.  
  3353. Using the methods -firstSelected and -nextSelected all selected records can be 
  3354. queried one by one. Use this piece of code to visit all selected records: 
  3355.  
  3356. .
  3357. .
  3358. if ([container firstSelected]) {
  3359. do {
  3360. /* specific manipulations */
  3361. /* for each record go here */
  3362. } while ([container nextSelected]);
  3363. }
  3364. .
  3365. .
  3366.  
  3367. If no record is currently selected, NULL is returned, otherwise a pointer to 
  3368. the CONTAINER_MINIREC structure of the first selected record. 
  3369.  
  3370.  
  3371. ΓòÉΓòÉΓòÉ 21.2.28. nextSelected ΓòÉΓòÉΓòÉ
  3372.  
  3373. -(CONTAINER_MINIREC *) nextSelected
  3374.  
  3375. -nextSelected is the counterpart to -nextRecord. It returns the 
  3376. CONTAINER_MINIREC structure of the next selected record. Before, the search 
  3377. must have been initialized using -firstSelected. 
  3378.  
  3379. If no more record is selected, NULL is returned. 
  3380.  
  3381.  
  3382. ΓòÉΓòÉΓòÉ 21.2.29. recordIsSelected ΓòÉΓòÉΓòÉ
  3383.  
  3384. -(BOOL) recordIsSelected
  3385.  
  3386. This method returns YES, if the current record specified in recordBuffer is 
  3387. selected. Otherwise NO is returned. 
  3388.  
  3389.  
  3390. ΓòÉΓòÉΓòÉ 21.2.30. objectWithTitle: ΓòÉΓòÉΓòÉ
  3391.  
  3392. -objectWithTitle: (char *) aTitle
  3393.  
  3394. Using -objectWithTitle: you can retrieve a pointer to the first object stored 
  3395. with the title text aTitle. Only the top level hierarchy is searched at the 
  3396. moment. 
  3397.  
  3398. recordBuffer is initialized with a pointer to the record structure of the 
  3399. record matching aTitle or NULL, if no record could be found. 
  3400.  
  3401.  
  3402. ΓòÉΓòÉΓòÉ 21.2.31. invalidateRecord ΓòÉΓòÉΓòÉ
  3403.  
  3404. -invalidateRecord
  3405.  
  3406. After changing the data of an item, which could affect display, you should call 
  3407. this method. This causes the current record to be redisplayed if necessary. 
  3408.  
  3409. This method must be called, if you decide to change some parameters in the 
  3410. CONTAINER_MINIREC structure of the current record other than the data in the 
  3411. object stored. 
  3412.  
  3413.  
  3414. ΓòÉΓòÉΓòÉ 21.2.32. invalidateSelectedRecords ΓòÉΓòÉΓòÉ
  3415.  
  3416. -invalidateSelectedRecords
  3417.  
  3418. -invalidateSelectedRecords works the same as -invalidateRecord, but it extends 
  3419. invalidation to all selected records. 
  3420.  
  3421.  
  3422. ΓòÉΓòÉΓòÉ 21.2.33. hideRecord: ΓòÉΓòÉΓòÉ
  3423.  
  3424. -hideRecord: sender
  3425.  
  3426. Calling -hideRecord: causes the current record to be hidden. The record is not 
  3427. deleted, it only will not be displayed by the container. 
  3428.  
  3429. This method automatically calls -invalidateRecord. 
  3430.  
  3431. If you want to hide more than one record, consider using -hideSelectedRecords: 
  3432. or -hideNotSelectedRecords: for performance issues. Hiding each record using 
  3433. -hideRecord: is painfully slow. 
  3434.  
  3435. This method can be used as an action method. 
  3436.  
  3437.  
  3438. ΓòÉΓòÉΓòÉ 21.2.34. hideSelectedRecords: ΓòÉΓòÉΓòÉ
  3439.  
  3440. -hideSelectedRecords: sender
  3441.  
  3442. This method hides all selected records and thereafter causing them to be 
  3443. invalidated. 
  3444.  
  3445. If you want to hide some records which are currently not selected, walk through 
  3446. the list of records using -firstRecord and -nextRecord and select or deselect 
  3447. some of the records using select or deselect. Afterwards call 
  3448. -hideSelectedRecords:. 
  3449.  
  3450. Because this methods accepts a parameter sender it can be used as target of a 
  3451. command/action binding. The parameter sender itself is ignored. 
  3452.  
  3453.  
  3454. ΓòÉΓòÉΓòÉ 21.2.35. hideNotSelectedRecords: ΓòÉΓòÉΓòÉ
  3455.  
  3456. -hideNotSelectedRecords: sender
  3457.  
  3458. In contrast to hideSelectedRecords: this method hides all records which are not 
  3459. selected. 
  3460.  
  3461. sender is ignored. This method can be used as an action method. 
  3462.  
  3463.  
  3464. ΓòÉΓòÉΓòÉ 21.2.36. showRecord: ΓòÉΓòÉΓòÉ
  3465.  
  3466. -showRecord: sender
  3467.  
  3468. This method is the counterpart to -hideRecord:. It will cause the current 
  3469. record to be displayed in the containerobject if it was hidden previously. 
  3470.  
  3471.  
  3472. ΓòÉΓòÉΓòÉ 21.2.37. showAllRecords: ΓòÉΓòÉΓòÉ
  3473.  
  3474. -showAllRecords: sender
  3475.  
  3476. -showAllRecords: changes the state of all hidden records to visible again and 
  3477. displays them. 
  3478.  
  3479.  
  3480. ΓòÉΓòÉΓòÉ 21.2.38. recordIsHidden ΓòÉΓòÉΓòÉ
  3481.  
  3482. -(BOOL) recordIsHidden
  3483.  
  3484. If the current record is hidden, this method returns YES, otherwise NO is 
  3485. returned. 
  3486.  
  3487.  
  3488. ΓòÉΓòÉΓòÉ 21.2.39. removeAllColumns: ΓòÉΓòÉΓòÉ
  3489.  
  3490. -removeAllColumns: sender
  3491.  
  3492. This method will cause all columns to be removed. If in details view, the 
  3493. container display area will be empty after calling -removeAllColumns:. The 
  3494. records themselves still do exist. 
  3495.  
  3496.  
  3497. ΓòÉΓòÉΓòÉ 21.2.40. removeAllRecords: ΓòÉΓòÉΓòÉ
  3498.  
  3499. -removeAllRecords: sender
  3500.  
  3501. -removeAllRecords: will remove every record from the container control. The 
  3502. records are not freed automatically. You have to do this yourself. 
  3503.  
  3504.  
  3505. ΓòÉΓòÉΓòÉ 21.2.41. removeSelectedRecords: ΓòÉΓòÉΓòÉ
  3506.  
  3507. -removeSelectedRecords: sender
  3508.  
  3509. Calling this method will remove all selected methods from the container 
  3510. control. The objects are not freed automatically. 
  3511.  
  3512.  
  3513. ΓòÉΓòÉΓòÉ 21.2.42. columns ΓòÉΓòÉΓòÉ
  3514.  
  3515. -(ULONG) columns
  3516.  
  3517. -columns is used to query the total number of columns currently existing in 
  3518. detailss view. 
  3519.  
  3520.  
  3521. ΓòÉΓòÉΓòÉ 21.2.43. firstColumn ΓòÉΓòÉΓòÉ
  3522.  
  3523. -(FIELDINFO *) firstColumn
  3524.  
  3525. As -firstRecord is used to set the current record to the first record, this 
  3526. method affects the internal buffer variable columnBuffer. The first column is 
  3527. put into this variable and columnBuffer is returned. 
  3528.  
  3529. columnBuffer stores a pointer to the FIELDINFO structure of the current column. 
  3530.  
  3531. If there are no columns, NULL is returned. 
  3532.  
  3533.  
  3534. ΓòÉΓòÉΓòÉ 21.2.44. lastColumn ΓòÉΓòÉΓòÉ
  3535.  
  3536. -(FIELDINFO *) lastColumn
  3537.  
  3538. In contrast to -firstColumn, -lastColumn queries information about the last 
  3539. column stored in the container. If no columns exist, NULL is returned. 
  3540.  
  3541.  
  3542. ΓòÉΓòÉΓòÉ 21.2.45. nextColumn ΓòÉΓòÉΓòÉ
  3543.  
  3544. -(FIELDINFO *) nextColumn
  3545.  
  3546. This method queries information about the next column. The search must have 
  3547. been initialized using -firstColumn. 
  3548.  
  3549. This part of code can be used to query and modify information for all existing 
  3550. columns, starting at the first one: 
  3551.  
  3552. .
  3553. .
  3554. if ([container firstColumn]) {
  3555. do {
  3556. /* specific manipulations */
  3557. /* for each column go here */
  3558. } while ([container nextColumn]);
  3559. }
  3560. .
  3561. .
  3562.  
  3563.  
  3564. ΓòÉΓòÉΓòÉ 21.2.46. previousColumn ΓòÉΓòÉΓòÉ
  3565.  
  3566. -(FIELDINFO *) previousColumn
  3567.  
  3568. This method queries information about the previous column. The search must have 
  3569. been initialized using -lastColumn. 
  3570.  
  3571. This part of code can be used to query and modify information for all existing 
  3572. columns, starting at the last one: 
  3573.  
  3574. .
  3575. .
  3576. if ([container lastColumn]) {
  3577. do {
  3578. /* specific manipulations */
  3579. /* for each column go here */
  3580. } while ([container previousColumn]);
  3581. }
  3582. .
  3583. .
  3584.  
  3585.  
  3586. ΓòÉΓòÉΓòÉ 21.2.47. columnTitle ΓòÉΓòÉΓòÉ
  3587.  
  3588. -(char *) columnTitle
  3589.  
  3590. -columnTitle returns a pointer to the NULL-terminated title string of the 
  3591. current column. 
  3592.  
  3593.  
  3594. ΓòÉΓòÉΓòÉ 21.2.48. columnTitleAttributes ΓòÉΓòÉΓòÉ
  3595.  
  3596. -(ULONG) columnTitleAttributes
  3597.  
  3598. Every column stored in the container has two different attribute settings, one 
  3599. for the title data, and one for the data itself. 
  3600.  
  3601. -columnTitleAttributes is used to query the title attribute settings of the 
  3602. current column. These settings can be modified using -setColumnTitleAttributes. 
  3603.  
  3604. Table * shows the attributes which can be set or queried for the title data. 
  3605. Additionally, the appearance can be modified using the alignment flags shown in 
  3606. table *. 
  3607.  
  3608. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3609. Γöé Flag               Γöé Description                            Γöé
  3610. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3611. ΓöéCFA_BITMAPORICON    ΓöéIf this flag is set, the title string   Γöé
  3612. Γöé                    Γöéshould be really a handle of a bitmap orΓöé
  3613. Γöé                    Γöéan icon. This bitmap is displayed       Γöé
  3614. Γöé                    Γöéinstead of a title string. Because at   Γöé
  3615. Γöé                    Γöéthe moment, only text strings are       Γöé
  3616. Γöé                    Γöésupported by this class, you should not Γöé
  3617. Γöé                    Γöéspecify this flag.                      Γöé
  3618. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3619. ΓöéCFA_FITITLEREADONLY ΓöéSpecifying this flag causes the title   Γöé
  3620. Γöé                    Γöétext to be read-only.                   Γöé
  3621. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3622.  
  3623. Flags specified for container column titles 
  3624.  
  3625. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3626. Γöé Flag               Γöé Description                            Γöé
  3627. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3628. ΓöéCFA_LEFT            ΓöéThis causes either the data or the titleΓöé
  3629. Γöé                    Γöéstring to be aligned to the left.       Γöé
  3630. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3631. ΓöéCFA_CENTER          ΓöéIf specified, data or title string are  Γöé
  3632. Γöé                    Γöéhorizontally centered.                  Γöé
  3633. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3634. ΓöéCFA_RIGHT           ΓöéAlign data or title string to the right Γöé
  3635. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3636. ΓöéCFA_TOP             ΓöéTop-align the data or title string.     Γöé
  3637. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3638. ΓöéCFA_VCENTER         ΓöéCause the data or title string to be    Γöé
  3639. Γöé                    Γöévertically centered.                    Γöé
  3640. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3641. ΓöéCFA_BOTTOM          ΓöéAlign the data or title string to the   Γöé
  3642. Γöé                    Γöébottom.                                 Γöé
  3643. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3644.  
  3645. Container flags specifying alignment of data and title text 
  3646.  
  3647.  
  3648. ΓòÉΓòÉΓòÉ 21.2.49. columnDataAttributes ΓòÉΓòÉΓòÉ
  3649.  
  3650. -(ULONG) columnDataAttributes
  3651.  
  3652. Every column stored in the container has two different attribute settings, one 
  3653. for the title data, and one for the data itself. 
  3654.  
  3655. -columnDataAttributes is used to query the data attribute settings of the 
  3656. current column. These settings can be modified using -setColumnDataAttributes. 
  3657.  
  3658. Each column can display data of a specific data type. The data type is 
  3659. specified using the flags shown in table *. 
  3660.  
  3661. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3662. Γöé Flag               Γöé Description                            Γöé
  3663. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3664. ΓöéCFA_BITMAPORICON    ΓöéThe data stored is a bitmap or icon.    Γöé
  3665. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3666. ΓöéCFA_STRING          ΓöéThe data stored is a text string. This  Γöé
  3667. Γöé                    Γöéis the only datatype currently          Γöé
  3668. Γöé                    Γöésupported. Don't specify one of the     Γöé
  3669. Γöé                    Γöéother flags!                            Γöé
  3670. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3671. ΓöéCFA_ULONG           ΓöéData is an unsigned long integer.       Γöé
  3672. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3673. ΓöéCFA_DATE            ΓöéData is a date structure.               Γöé
  3674. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3675. ΓöéCFA_TIME            ΓöéData is a time structure.               Γöé
  3676. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3677.  
  3678. Flags specifying the data type of a field in a container 
  3679.  
  3680. Table * shows all possible flags used for alignment of the data, table * shows 
  3681. all other possible flags which can be specified for column data. 
  3682.  
  3683. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3684. Γöé Flag               Γöé Description                            Γöé
  3685. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3686. ΓöéCFA_SEPARATOR       ΓöéDraw a vertical separator line to the   Γöé
  3687. Γöé                    Γöéright of the current column.            Γöé
  3688. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3689. ΓöéCFA_HORZSEPARATOR   ΓöéDraw a horizontal separator line        Γöé
  3690. Γöé                    Γöéunderneath the column title.            Γöé
  3691. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3692. ΓöéCFA_OWNER           ΓöéEnable ownerdraw for this field. This isΓöé
  3693. Γöé                    Γöécurrently not supported by this class.  Γöé
  3694. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3695. ΓöéCFA_INVISIBLE       ΓöéIf this flag is set, the column is not  Γöé
  3696. Γöé                    Γöévisible.                                Γöé
  3697. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3698. ΓöéCFA_FIREADONLY      ΓöéThis sets the data displayed to         Γöé
  3699. Γöé                    Γöéread-only mode.                         Γöé
  3700. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3701.  
  3702. Miscellaneous flags specified for container column data.
  3703.  
  3704.  
  3705. ΓòÉΓòÉΓòÉ 21.2.50. hideColumn: ΓòÉΓòÉΓòÉ
  3706.  
  3707. -hideColumn: sender
  3708.  
  3709. Calling -hideColumn: causes the current column to be hidden in the future. The 
  3710. data inside this column is preserved and can be restored using -showColumn: 
  3711.  
  3712. This method can be used as an action method. 
  3713.  
  3714.  
  3715. ΓòÉΓòÉΓòÉ 21.2.51. showColumn: ΓòÉΓòÉΓòÉ
  3716.  
  3717. -showColumn: sender
  3718.  
  3719. This method restores the visibility state of a previously hidden column. 
  3720.  
  3721. This method can be used as an action method. 
  3722.  
  3723.  
  3724. ΓòÉΓòÉΓòÉ 21.2.52. showAllColumns: ΓòÉΓòÉΓòÉ
  3725.  
  3726. -showAllColumns: sender
  3727.  
  3728. -showAllColumns: shows all columns, including those previously hidden. 
  3729.  
  3730. This method can be used as an action method. 
  3731.  
  3732.  
  3733. ΓòÉΓòÉΓòÉ 21.2.53. columnIsHidden ΓòÉΓòÉΓòÉ
  3734.  
  3735. -(BOOL) columnIsHidden
  3736.  
  3737. If the current column is hidden, YES is returned, otherwise NO. 
  3738.  
  3739.  
  3740. ΓòÉΓòÉΓòÉ 21.2.54. invalidateColumns ΓòÉΓòÉΓòÉ
  3741.  
  3742. -invalidateColumns
  3743.  
  3744. After changing either the title attributes or the data attributes of a column, 
  3745. you should call -invalidateColumns to cause the modifications to be 
  3746. redisplayed. 
  3747.  
  3748.  
  3749. ΓòÉΓòÉΓòÉ 21.2.55. setColumnTitleAttributes: ΓòÉΓòÉΓòÉ
  3750.  
  3751. -setColumnTitleAttributes: (ULONG) attr
  3752.  
  3753. -setColumnTitleAttributes: is used to change the title attributes stored for 
  3754. the current column. After changing the attributes, don't forget to use 
  3755. -invalidateColumns to cause the columns to be redisplayed correctly. 
  3756.  
  3757. attr specifies, which flags should be set. The current value of the title 
  3758. attributes can be queried via -columnTitleAttributes. 
  3759.  
  3760. Table * and table * show all possible flags which can be specified. 
  3761.  
  3762. See * for more information concerning title attributes settings. 
  3763.  
  3764.  
  3765. ΓòÉΓòÉΓòÉ 21.2.56. setColumnDataAttributes: ΓòÉΓòÉΓòÉ
  3766.  
  3767. -setColumnDataAttributes: (ULONG) attr
  3768.  
  3769. -setColumnDataAttributes: is the counterpart to -columnDataAttributes and 
  3770. causes the data attributes of the current column to be set to attr. Possible 
  3771. flags which can be specified are shown in table *, table * and table *. 
  3772.  
  3773. After modifying any data, don't forget to call -invalidateColumns to redisplay 
  3774. the modifications. 
  3775.  
  3776. See * for more information concerning data attributes settings. 
  3777.  
  3778.  
  3779. ΓòÉΓòÉΓòÉ 21.2.57. select ΓòÉΓòÉΓòÉ
  3780.  
  3781. -select
  3782.  
  3783. Calling this method selects the current record. The selection is only displayed 
  3784. after calling -invalidateRecord or -invalidateSelectedRecords. 
  3785.  
  3786.  
  3787. ΓòÉΓòÉΓòÉ 21.2.58. deselect ΓòÉΓòÉΓòÉ
  3788.  
  3789. -deselect
  3790.  
  3791. Calling this method deselects the current record. The change in the selection 
  3792. state is only displayed after calling -invalidateRecord or 
  3793. -invalidateSelectedRecords. 
  3794.  
  3795.  
  3796. ΓòÉΓòÉΓòÉ 21.2.59. selectAll: ΓòÉΓòÉΓòÉ
  3797.  
  3798. -selectAll: sender
  3799.  
  3800. -selectAll: selects all records in the container. This also affects temporary 
  3801. hidden records, but does not display them. So be careful using this method when 
  3802. planning to modify all selected records afterwards. 
  3803.  
  3804. This method can be used as an action method. 
  3805.  
  3806.  
  3807. ΓòÉΓòÉΓòÉ 21.2.60. deselectAll: ΓòÉΓòÉΓòÉ
  3808.  
  3809. -deselectAll: sender
  3810.  
  3811. -deselectAll: deselects all records in the container. This also affects 
  3812. temporary hidden records, but does not display them. So be careful using this 
  3813. ethod when planning to modify all selected records afterwards. 
  3814.  
  3815. This method can be used as an action method. 
  3816.  
  3817.  
  3818. ΓòÉΓòÉΓòÉ 21.2.61. sort: ΓòÉΓòÉΓòÉ
  3819.  
  3820. -sort: (ULONG) column
  3821.  
  3822. Calling this method causes the records to be sorted by column number column. Do 
  3823. not use this method if your records are not prepared to hold different columns 
  3824. as needed in detail's view. 
  3825.  
  3826. The sorting is simply done in ascending order by the ASCII values of the data 
  3827. represented as strings. 
  3828.  
  3829.  
  3830. ΓòÉΓòÉΓòÉ 21.2.62. sortByTitleWithCase: ΓòÉΓòÉΓòÉ
  3831.  
  3832. -sortByTitleWithCase: sender
  3833.  
  3834. This action method will cause the objects to be sorted according to their 
  3835. object title. The sorting is performed case-sensitive. The compare function is 
  3836. not NLS-enabled, for simplicity, strcmp() is used at the moment. 
  3837.  
  3838.  
  3839. ΓòÉΓòÉΓòÉ 21.2.63. sortByTitleWithoutCase: ΓòÉΓòÉΓòÉ
  3840.  
  3841. -sortByTitleWithoutCase: sender
  3842.  
  3843. This action method will cause the objects to be sorted according to their 
  3844. object title. The sorting is performed case-insensitive. The compare function 
  3845. is not NLS-enabled, for simplicity, stricmp() is used at the moment. 
  3846.  
  3847.  
  3848. ΓòÉΓòÉΓòÉ 21.2.64. handleMessage: withParams: and: ΓòÉΓòÉΓòÉ
  3849.  
  3850. -(MRESULT) handleMessage: (ULONG) msg withParams:(MPARAM) mp1 and: (MPARAM) mp2
  3851.  
  3852. This method will handle most of the notification messages a container window 
  3853. can send. See the section Methods implemented by the delegate to get informed 
  3854. of the messages handled by this method. 
  3855.  
  3856.  
  3857. ΓòÉΓòÉΓòÉ 21.3. Methods implemented by the delegate ΓòÉΓòÉΓòÉ
  3858.  
  3859.  
  3860. ΓòÉΓòÉΓòÉ 21.3.1. beginEdit: ΓòÉΓòÉΓòÉ
  3861.  
  3862. -beginEdit: sender
  3863.  
  3864. Whenever the user starts an action of direct editing on some container item 
  3865. (either an object's title or some column data) this message is sent to the 
  3866. delegate object. 
  3867.  
  3868. The return value is ignored. The cause of this message is the OS/2 message 
  3869. CN_BEGINEDIT originating from the container window. 
  3870.  
  3871.  
  3872. ΓòÉΓòÉΓòÉ 21.3.2. changeString: ΓòÉΓòÉΓòÉ
  3873.  
  3874. -changeString: (CNREDITDATA *) editData
  3875.  
  3876. If direct editing requires a new memory block to store the string this delegate 
  3877. method is called by the container object. The delegate object now has to make 
  3878. sure a memory block large enough to hold editData->cbText + 1 bytes is 
  3879. available at the address pointed to by editData->ppszText. Keep in mind, that 
  3880. editData->ppszText is a pointer to a string, defined with (PSZ *) or in more 
  3881. common C datatypes using a (char **). 
  3882.  
  3883. To handle this message, you should check, if the memory block is large enough 
  3884. to hold editData->cbText bytes and perform corrective action if this is not the 
  3885. case. E.g. use 
  3886.  
  3887.  
  3888. /*
  3889. * free the memory block allocated previously for the string
  3890. */
  3891. free (*(editData->ppszText));
  3892.  
  3893. /*
  3894. * create a new block of memory large enough for storing the
  3895. * newly edited string.
  3896. */
  3897. *(editData->ppszText) = (char *) malloc (editData->cbText + 1);
  3898.  
  3899. /*
  3900. * let the container control modify the string!
  3901. */
  3902. return self;
  3903.  
  3904. to dynamically adjust to the edited data, or write something like this 
  3905.  
  3906.  
  3907. /*
  3908. * check, if the string is too large to fit in the fixed-length
  3909. * field storing at most MAX_LENGTH characters. The field was
  3910. * allocated as an array of characters large enough for MAX_LENGTH
  3911. * + 1 characters.
  3912. */
  3913. if (editData->cbText > MAX_LENGTH)
  3914. return nil; /* do not modify the string */
  3915. else
  3916. return self; /* modify the string
  3917.  
  3918. You are not allowed to use any of the container methods or send the container 
  3919. window any OS/2 messages when this method is called until the -stringChanged: 
  3920. delegate method is called. 
  3921.  
  3922. If the return value of this method is nil no change will be performed, 
  3923. otherwise, the newly allocated memory block will be filled with the new string 
  3924. which was edited. The cause of this message is the OS/2 message CN_REALLOCPSZ 
  3925. originating from the container window. 
  3926.  
  3927.  
  3928. ΓòÉΓòÉΓòÉ 21.3.3. emphasisChanged: ΓòÉΓòÉΓòÉ
  3929.  
  3930. -emphasisChanged: (NOTIFYRECORDEMPHASIS *)recordEmphasis
  3931.  
  3932. Whenever the user selects an object in the container, this object is said to 
  3933. receive the record emphasis. 
  3934.  
  3935. After the record emphasis is changed, the delegate object is notified of this 
  3936. by calling its -emphasisChanged: method. 
  3937.  
  3938. The return value is ignored. The cause of this message is the OS/2 message 
  3939. CN_EMPHASIS originating from the container window. 
  3940.  
  3941.  
  3942. ΓòÉΓòÉΓòÉ 21.3.4. enterPressed: ΓòÉΓòÉΓòÉ
  3943.  
  3944. -enterPressed: (NOTIFYRECORDENTER *)recordEnter
  3945.  
  3946. As soon as the user presses the enter key in the container object while a 
  3947. container item is selected or an object is double-clicked, the delegate object 
  3948. is sent the -enterPressed: message. The NOTIFYRECORDENTER structure provides 
  3949. information about the selected record. 
  3950.  
  3951. The return value of this method is ignored. The cause of this message is the 
  3952. OS/2 message CN_ENTER originating from the container window. 
  3953.  
  3954.  
  3955. ΓòÉΓòÉΓòÉ 21.3.5. showContextMenu: ΓòÉΓòÉΓòÉ
  3956.  
  3957. -showContextMenu: (PRECORDCORE)recordCore
  3958.  
  3959. When the user activates a context menu while in the container control, the 
  3960. delegate object is sent a -showContextMenu: message. recordCore is either NULL 
  3961. if the pointer is not over a container record, otherwise a pointer to the 
  3962. CONTAINER_MINIREC structure of the record beneath the mouse pointer is provided 
  3963. here. 
  3964.  
  3965. The return value of this method is ignored. The cause of this message is the 
  3966. OS/2 message CN_CONTEXTMENU originating from the container window. 
  3967.  
  3968.  
  3969. ΓòÉΓòÉΓòÉ 21.3.6. stringChanged: ΓòÉΓòÉΓòÉ
  3970.  
  3971. -stringChanged: (CNREDITDATA *)editData
  3972.  
  3973. After direct editing a container item has ended, the delegate object is sent 
  3974. this message. After receiving this method, you can safely call methods of the 
  3975. container object or send the container window OS/2 messages. 
  3976.  
  3977. The new string can be found in *(editData->ppszText). 
  3978.  
  3979. The return value is ignored. The cause of this message is the OS/2 message 
  3980. CN_ENDEDIT originating from the container window. 
  3981.  
  3982.  
  3983. ΓòÉΓòÉΓòÉ 21.3.7. handleMessage: withParams: and:: ΓòÉΓòÉΓòÉ
  3984.  
  3985. -handleMessage: (ULONG) msg withParams: (MPARAM) mp1and: (MPARAM) mp2 : sender
  3986.  
  3987. Every other OS/2 message sent by the container window can be processed by this 
  3988. delegate method. The message is specified by msg, the parameters are mp1 and 
  3989. mp2. 
  3990.  
  3991. If the return value of this method is not null, the messages are assumed to be 
  3992. processed. Otherwise, the messages are passed to the container's owner window 
  3993. which is normally an instance of StdDialog or StdWindow. 
  3994.  
  3995.  
  3996. ΓòÉΓòÉΓòÉ 22. DelegateWindow ΓòÉΓòÉΓòÉ
  3997.  
  3998. Inherits from: Window : Object 
  3999.  
  4000. Class description: 
  4001.  
  4002. This class is the common superclass for most of the window objects in this 
  4003. library. It provides a single instance variable delegate and methods to read 
  4004. and set this variable. 
  4005.  
  4006. The concept of delegate objects is explained in detail in the Tutorial 
  4007. document. 
  4008.  
  4009.  
  4010. ΓòÉΓòÉΓòÉ 22.1. Instance Variables ΓòÉΓòÉΓòÉ
  4011.  
  4012.  
  4013. ΓòÉΓòÉΓòÉ 22.1.1. iddelegate ΓòÉΓòÉΓòÉ
  4014.  
  4015. This instance variable stores a pointer to the window's delegate object. 
  4016.  
  4017.  
  4018. ΓòÉΓòÉΓòÉ 22.2. Methods ΓòÉΓòÉΓòÉ
  4019.  
  4020.  
  4021. ΓòÉΓòÉΓòÉ 22.2.1. init ΓòÉΓòÉΓòÉ
  4022.  
  4023. -init
  4024.  
  4025. This method just initializes the object by calling its superclasses' -init 
  4026. method and sets delegate to nil. 
  4027.  
  4028.  
  4029. ΓòÉΓòÉΓòÉ 22.2.2. setDelegate: ΓòÉΓòÉΓòÉ
  4030.  
  4031. -setDelegate: anObject
  4032.  
  4033. Using -setDelegate: you set the delegate object of the window to anObject. 
  4034.  
  4035.  
  4036. ΓòÉΓòÉΓòÉ 22.2.3. delegate ΓòÉΓòÉΓòÉ
  4037.  
  4038. -delegate
  4039.  
  4040. This method returns a pointer to the delegate object. It is stored in the 
  4041. instance variable delegate. 
  4042.  
  4043.  
  4044. ΓòÉΓòÉΓòÉ 23. EntryField ΓòÉΓòÉΓòÉ
  4045.  
  4046. Inherits from: FactoryWindow : DelegateWindow : Window : Object 
  4047.  
  4048. Archiving, Selection, Value 
  4049.  
  4050. Class description:  The class EntryField was designed to simplify access to 
  4051.                     OS/2 PM entry field controls. Using the methods implemented 
  4052.                     for this class the programmer can control all interesting 
  4053.                     features of this predefined window class. 
  4054.  
  4055. The text typed into the entryfield can be accessed via the inherited methods 
  4056. setTest: and text:. In future releases of this class library methods for 
  4057. automatically checking typed input will be provided for integers, floating 
  4058. point numbers, By adopting the procotol Selection simple access to Clipboard 
  4059. operations as copy or paste is provided. See also the description of this 
  4060. protocol on page protocol:selection. 
  4061.  
  4062. The Value protocol will allow differnt access to the string entered by the 
  4063. user. 
  4064.  
  4065.  
  4066. ΓòÉΓòÉΓòÉ 23.1. Instance Variables ΓòÉΓòÉΓòÉ
  4067.  
  4068.  
  4069. ΓòÉΓòÉΓòÉ 23.1.1. inttextLimit ΓòÉΓòÉΓòÉ
  4070.  
  4071. This variable stores the maximum length of the string which can be entered in 
  4072. the entry field. Use -textLimit and setTextLimit: to access this variable. 
  4073.  
  4074.  
  4075. ΓòÉΓòÉΓòÉ 23.2. Methods ΓòÉΓòÉΓòÉ
  4076.  
  4077.  
  4078. ΓòÉΓòÉΓòÉ 23.2.1. initWithId: andFlags: in: ΓòÉΓòÉΓòÉ
  4079.  
  4080. -initWithId: (ULONG) anId andFlags: (ULONG) flags in:(Window *) parent
  4081.  
  4082. By using this Initializer the Programmer can create a new entry field control 
  4083. in an existing parent window. anId is the PM id of the entry field which is to 
  4084. be created, flags specify the creation flags for the entry field control 
  4085. (ES_xxxx and  WS_xxxx constants). parent is the parent window of the newly 
  4086. created entry field, which normally is either an instance of StdDialog or 
  4087. StdWindow. 
  4088.  
  4089. After creating the entry field the size can be set via  -setSize:::: and the 
  4090. text to be displayed via -setText:. Clearing the text of an entry field can be 
  4091. achieved calling  [entryfield setText: ]. 
  4092.  
  4093. Association to an existing PM entry field window should be done by using 
  4094. -associate:. 
  4095.  
  4096. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4097. Γöé Flag               Γöé Description                            Γöé
  4098. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4099. ΓöéES_LEFT             ΓöéThe text in the entry field is          Γöé
  4100. Γöé                    Γöéleft-justified. This style is used when Γöé
  4101. Γöé                    Γöéneither ES_LEFT, nor ES_RIGHT nor       Γöé
  4102. Γöé                    ΓöéES_CENTER is specified.                 Γöé
  4103. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4104. ΓöéES_RIGHT            ΓöéThe text in the entry field is          Γöé
  4105. Γöé                    Γöéright-justified.                        Γöé
  4106. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4107. ΓöéES_CENTER           ΓöéThe text in the entry field is centered.Γöé
  4108. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4109. ΓöéES_AUTOSIZE         ΓöéWhen this flag is set, the text will be Γöé
  4110. Γöé                    Γöésized to fit in the entry field.        Γöé
  4111. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4112. ΓöéES_AUTOSCROLL       ΓöéThe text in the entry field is scrolled Γöé
  4113. Γöé                    Γöéto the left or right if it is longer    Γöé
  4114. Γöé                    Γöéthan would fit in the entry field.      Γöé
  4115. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4116. ΓöéES_MARGIN           ΓöéA margin is drawn around the entry      Γöé
  4117. Γöé                    Γöéfield.                                  Γöé
  4118. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4119. ΓöéES_READONLY         ΓöéThe entry field will be created in      Γöé
  4120. Γöé                    Γöéread-only mode                          Γöé
  4121. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4122. ΓöéES_UNREADABLE       ΓöéEvery character in the text is displayedΓöé
  4123. Γöé                    Γöéas an asterisk. This is useful when     Γöé
  4124. Γöé                    Γöéquerying passwords.                     Γöé
  4125. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4126. ΓöéES_COMMAND          ΓöéThis style classifies the entry field asΓöé
  4127. Γöé                    Γöéa command entry field. This style shouldΓöé
  4128. Γöé                    Γöébe applied to at most one entry field   Γöé
  4129. Γöé                    Γöéper dialog or window.                   Γöé
  4130. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4131. ΓöéES_AUTOTAB          ΓöéWhen this flag is set, the focus is     Γöé
  4132. Γöé                    Γöémoved to the next window when a         Γöé
  4133. Γöé                    Γöécharacter is appended to the text.      Γöé
  4134. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4135.  
  4136. ES_xxxx styles used at creation of an entry field 
  4137.  
  4138. A newly created EntryField object is not automatically inserted as a child 
  4139. window of its parent. Use [parent insertChild: entryfield] where parent is the 
  4140. parent window and entryfield is the newly created entry field object. 
  4141.  
  4142.  
  4143.  
  4144. In this figure you can see (from left to right) an
  4145. EntryField without a margin, one with a margin and an
  4146. entry field with margin and the style option
  4147. BS_UNREADABLE
  4148.  
  4149. Table * (Page *) shows most of the available ES_xxxx flags used at creation of 
  4150. the entry field. 
  4151.  
  4152. In addition to these flags there's also another group of flags defining the 
  4153. encoding scheme for the text in the entry field. These flags are only used when 
  4154. a double-byte encoding scheme is used for text. 
  4155.  
  4156. Figure * on page * shows three possible forms of how an entry field can look. 
  4157.  
  4158.  
  4159. ΓòÉΓòÉΓòÉ 23.2.2. changed ΓòÉΓòÉΓòÉ
  4160.  
  4161. -(BOOL) changed
  4162.  
  4163. -changed returns YES if the text displayed in the EntryField has changed since 
  4164. the last call to this method,  NO otherwise. 
  4165.  
  4166.  
  4167. ΓòÉΓòÉΓòÉ 23.2.3. readOnly ΓòÉΓòÉΓòÉ
  4168.  
  4169. -(BOOL) readOnly
  4170.  
  4171. By using this method the programmer can query if the entry field is in 
  4172. read-only or in read-write mode. When  read-only no characters can be typed 
  4173. into the entry field. 
  4174.  
  4175. This method returns YES if the entry field is in  read-only mode, NO otherwise 
  4176. (read-write). 
  4177.  
  4178.  
  4179. ΓòÉΓòÉΓòÉ 23.2.4. setReadOnly ΓòÉΓòÉΓòÉ
  4180.  
  4181. -setReadOnly
  4182.  
  4183. Calling this method activates the read-only mode of the entry field. 
  4184.  
  4185.  
  4186. ΓòÉΓòÉΓòÉ 23.2.5. setReadWrite ΓòÉΓòÉΓòÉ
  4187.  
  4188. -setReadWrite
  4189.  
  4190. -setReadWrite switches the entry field to read-write mode. 
  4191.  
  4192.  
  4193. ΓòÉΓòÉΓòÉ 23.2.6. setTextLimit: ΓòÉΓòÉΓòÉ
  4194.  
  4195. -setTextLimit: (SHORT) limit
  4196.  
  4197. By calling -setTextLimit: the programmer can set the maximum number of 
  4198. characters which can be entered into the entry field.  limit is this maximum 
  4199. number of characters. 
  4200.  
  4201. When querying the contents of the entry field via -text: the maximum number of 
  4202. characters returned is limit + 1, including the concluding '\0x0' at the end of 
  4203. the string. 
  4204.  
  4205.  
  4206. ΓòÉΓòÉΓòÉ 23.2.7. textLimit ΓòÉΓòÉΓòÉ
  4207.  
  4208. -(int) textLimit
  4209.  
  4210. This method returns the value of the instance variable textLimit. This is the 
  4211. total number of characters the user can enter into the entry field. 
  4212.  
  4213.  
  4214. ΓòÉΓòÉΓòÉ 23.2.8. handleMessage: msg withParams: ΓòÉΓòÉΓòÉ
  4215.  
  4216. and: 
  4217.  
  4218. -(MRESULT) handleMessage: (ULONG) msg withParams:(MPARAM) mp1 and: (MPARAM) mp2
  4219.  
  4220. This method performs the handling of some OS/2 messages. The messages are 
  4221. forwarded to the delegate window. 
  4222.  
  4223. At the moment, the control messages (message WM_CONTROL) EN_CHANGE, 
  4224. EN_KILLFOCUS and EN_SETFOCUS are handled. 
  4225.  
  4226.  
  4227. ΓòÉΓòÉΓòÉ 23.3. Methods implemented by the delegate ΓòÉΓòÉΓòÉ
  4228.  
  4229.  
  4230. ΓòÉΓòÉΓòÉ 23.3.1. focusLost: ΓòÉΓòÉΓòÉ
  4231.  
  4232. -focusLost: sender
  4233.  
  4234. Whenever the entry field leaves the focus, i.e., it is deselected, this 
  4235. delegate method is called. sender is a pointer to the entry field control. 
  4236.  
  4237.  
  4238. ΓòÉΓòÉΓòÉ 23.3.2. focusReceived: ΓòÉΓòÉΓòÉ
  4239.  
  4240. -focusReceived: sender
  4241.  
  4242. If the entry field gets selected it is said to receive the input focus. In this 
  4243. case, the delegate method -focusReceived: is called, passing a pointer to the 
  4244. entry field object to the delegate method. 
  4245.  
  4246.  
  4247. ΓòÉΓòÉΓòÉ 23.3.3. textChanged: ΓòÉΓòÉΓòÉ
  4248.  
  4249. -textChanged: sender
  4250.  
  4251. This method is called when the user has changed the contents of the entry field 
  4252. window. sender is a pointer to the sending EntryField instance. 
  4253.  
  4254.  
  4255. ΓòÉΓòÉΓòÉ 23.3.4. handleMessage: msg ΓòÉΓòÉΓòÉ
  4256.  
  4257. withParams: and:: 
  4258.  
  4259. -(MRESULT) handleMessage: (ULONG) msg withParams:(MPARAM) mp1 and: (MPARAM) mp2 : sender
  4260.  
  4261. All other notification messages not handled by the object are forwarded to this 
  4262. method. 
  4263.  
  4264.  
  4265. ΓòÉΓòÉΓòÉ 24. FactoryWindow ΓòÉΓòÉΓòÉ
  4266.  
  4267. Inherits from: DelegateWindow : Window : Object 
  4268.  
  4269. Class description: 
  4270.  
  4271. To be able to catch the OS/2 window notification messages, every window control 
  4272. displayed on screen is associated with a so-called owner window. Creating and 
  4273. handling this owner window is done by the methods of this class, FactoryWindow. 
  4274. Therefore most of the window classes are derived directly or indirectly from 
  4275. this class. 
  4276.  
  4277. In more detail this means, that every OS/2 message sent from an OS/2 window 
  4278. object is sent to its owner window. These messages are processed by the owner 
  4279. window and routed to the "local" -handleMessage: withParams: and: methods of 
  4280. the objects themselves. There they can be processed easily. 
  4281.  
  4282. Don't be afraid of creating an extra window object (the owner) for every OS/2 
  4283. window you wish to display, this extra window is neither time nor 
  4284. space-consuming to be worth thinking of. 
  4285.  
  4286.  
  4287. ΓòÉΓòÉΓòÉ 24.1. Instance Variables ΓòÉΓòÉΓòÉ
  4288.  
  4289.  
  4290. ΓòÉΓòÉΓòÉ 24.1.1. HWNDowner ΓòÉΓòÉΓòÉ
  4291.  
  4292. This instance variable will hold the window handle (type HWND) of the owner 
  4293. window. The OS/2 window class used for this kind of window named ObjcWindow and 
  4294. defined in "pm/Window.h" using the constant WINDOW_CLASS. 
  4295.  
  4296.  
  4297. ΓòÉΓòÉΓòÉ 24.2. Methods ΓòÉΓòÉΓòÉ
  4298.  
  4299.  
  4300. ΓòÉΓòÉΓòÉ 24.2.1. initIn: ΓòÉΓòÉΓòÉ
  4301.  
  4302. -initIn: (Window *) parent
  4303.  
  4304. -initIn: creates the owner window as a child of parent. The window is created 
  4305. invisible. It cannot be displayed on the screen. 
  4306.  
  4307.  
  4308. ΓòÉΓòÉΓòÉ 24.2.2. associate: ΓòÉΓòÉΓòÉ
  4309.  
  4310. -associate: (HWND) hwnd
  4311.  
  4312. As an alternative constructor method -associated: is used to associated an 
  4313. already existing OS/2 window control with an Objective C object. This method 
  4314. takes care that an owner window is created and the OS/2 messages originating 
  4315. from hwnd are routed towards the owner window. 
  4316.  
  4317.  
  4318. ΓòÉΓòÉΓòÉ 24.2.3. destroy ΓòÉΓòÉΓòÉ
  4319.  
  4320. -destroy
  4321.  
  4322. This method destroys the owner window and subsequently calles its superclasses' 
  4323. -destroy method. 
  4324.  
  4325.  
  4326. ΓòÉΓòÉΓòÉ 24.2.4. setWindow: ΓòÉΓòÉΓòÉ
  4327.  
  4328. -setWindow: (HWND) aWindow
  4329.  
  4330. -setWindow: sets the inherited instance variable window to aWindow and modifies 
  4331. the message processing order so that all OS/2 notification messages originating 
  4332. from aWindow are routed towards the owner window and---subsequently---to the 
  4333. "local" -handleMessage: withParams: and: methods. 
  4334.  
  4335.  
  4336. ΓòÉΓòÉΓòÉ 24.2.5. specialClass ΓòÉΓòÉΓòÉ
  4337.  
  4338. -specialClass
  4339.  
  4340. This method just returns self. If any window object can respond to this 
  4341. message, it is known that it is derived from FactoryWindow and the message 
  4342. handling will not work as expected for "normal" OS/2 window controls. 
  4343.  
  4344.  
  4345. ΓòÉΓòÉΓòÉ 24.2.6. handleMessage: withParams: and: ΓòÉΓòÉΓòÉ
  4346.  
  4347. -(MRESULT) handleMessage: (ULONG) msg withParams:(MPARAM) mp1 and: (MPARAM) mp2
  4348.  
  4349. This method only catches the WM_DESTROY message and returns 0 in this case. 
  4350.  
  4351. Otherwise, all messages are routed towards the owner of owner. 
  4352.  
  4353. Most descendants of FactoryWindow will overwrite this method to handle the 
  4354. associated OS/2 window's notification messages. 
  4355.  
  4356.  
  4357. ΓòÉΓòÉΓòÉ 25. FileDlg ΓòÉΓòÉΓòÉ
  4358.  
  4359. Inherits from: Object 
  4360.  
  4361. Class description: 
  4362.  
  4363. To enable the users of your programs to perform simple file selection as 
  4364. customary in OS/2 PM applications, the class FileDlg is provided. This dialog 
  4365. lets the user select a single file on one of the disks, supporting this action 
  4366. with various features shown in figure *. 
  4367.  
  4368.  
  4369.  
  4370. Sample file dialog
  4371.  
  4372. A file dialog can be created either for opening a file (see -initForOpen: 
  4373. withFilter:) or for saving a new file (see -initForSaveAs: withFilter:). 
  4374.  
  4375. The dialog provides user interface objects to select the disk drive, the 
  4376. directory and the filename of the file to be opened or saved. 
  4377.  
  4378. Depending on the initializing method either a Open or a Save button is present 
  4379. to close the dialog. 
  4380.  
  4381.  
  4382. ΓòÉΓòÉΓòÉ 25.1. Instance Variables ΓòÉΓòÉΓòÉ
  4383.  
  4384.  
  4385. ΓòÉΓòÉΓòÉ 25.1.1. FILEDLGfileDlg ΓòÉΓòÉΓòÉ
  4386.  
  4387. This variable is used to store the structure used to create and display a file 
  4388. dialog. The result of a file dialog after closing is also stored here. There is 
  4389. normally no use to access this structure directly. 
  4390.  
  4391.  
  4392. ΓòÉΓòÉΓòÉ 25.2. Methods ΓòÉΓòÉΓòÉ
  4393.  
  4394.  
  4395. ΓòÉΓòÉΓòÉ 25.2.1. init ΓòÉΓòÉΓòÉ
  4396.  
  4397. -init
  4398.  
  4399. This method initializes the structure FILEDLG to zeros and calls the -init 
  4400. method of its superclass. 
  4401.  
  4402.  
  4403. ΓòÉΓòÉΓòÉ 25.2.2. initForOpen: withFilter: ΓòÉΓòÉΓòÉ
  4404.  
  4405. -initForOpen: (const char *) aTitlewithFilter: (char *) aFilter
  4406.  
  4407. This method initializes a dialog for opening a file. The dialog is always 
  4408. centered in its parent window, which is specified as a parameter to 
  4409. -runModalFor:. 
  4410.  
  4411. The only way to change the appearance of the dialog is to use -setFlags:. 
  4412.  
  4413. aTitle is the title text of the dialog, which can also be specified at a later 
  4414. time using -setTitle:. 
  4415.  
  4416. The parameter aFilter specifies a filter by which the files in the displayed 
  4417. directory are selected for display. This string can hold some of the special 
  4418. characters * and ?, which here have the same meaning as using then as a 
  4419. filename argument to an OS/2 command. 
  4420.  
  4421. So specifying *.dat as filter string would cause only filenames to be displayed 
  4422. which are ending in .dat. 
  4423.  
  4424.  
  4425. ΓòÉΓòÉΓòÉ 25.2.3. initForSaveAs: withFilter: ΓòÉΓòÉΓòÉ
  4426.  
  4427. -initForSaveAs: (const char *) aTitlewithFilter: (char *) aFilter
  4428.  
  4429. This method initializes a dialog for saving a file. The dialog is always 
  4430. centered in its parent window, which is specified as a parameter to 
  4431.  
  4432. aTitle is the title text of the dialog, which can also be specified at a later 
  4433. time using -setTitle:. 
  4434.  
  4435. The parameter aFilter specifies a filter by which the files in the displayed 
  4436. directory are selected for display. This string can hold some of the special 
  4437. characters * and ?, which here have the same meaning as using then as a 
  4438. filename argument to an OS/2 command. -runModalFor:. 
  4439.  
  4440. The only way to change the appearance of the dialog is to use -setFlags:. 
  4441.  
  4442. So specifying *.dat as filter string would cause only filenames to be displayed 
  4443. which are ending in .dat. 
  4444.  
  4445.  
  4446. ΓòÉΓòÉΓòÉ 25.2.4. free ΓòÉΓòÉΓòÉ
  4447.  
  4448. -free
  4449.  
  4450. As expected, -free frees all resources claimed for by this object. The -free 
  4451. method of its superclass is called in the end. 
  4452.  
  4453.  
  4454. ΓòÉΓòÉΓòÉ 25.2.5. setTitle: ΓòÉΓòÉΓòÉ
  4455.  
  4456. -setTitle: (char *) aTitle
  4457.  
  4458. Using this method, you can change the title string displayed in the dialog 
  4459. after initializing the object. aTitle is this title string. 
  4460.  
  4461.  
  4462. ΓòÉΓòÉΓòÉ 25.2.6. setFilter: ΓòÉΓòÉΓòÉ
  4463.  
  4464. -setFilter: (char *) aFilter
  4465.  
  4466. This method is used to set the filter string aFilter after initializing the 
  4467. dialog. 
  4468.  
  4469.  
  4470. ΓòÉΓòÉΓòÉ 25.2.7. setFlags: ΓòÉΓòÉΓòÉ
  4471.  
  4472. -setFlags: (ULONG) aFlags
  4473.  
  4474. -setFlags: is the only possibility to change the appearance of the file dialog 
  4475. to other settings than the default (either (FDS_OPEN_DIALOG | FDS_CENTER) or 
  4476. (FDS_SAVEAS_DIALOG | FDS_CENTER), depending on the initializing method used). 
  4477.  
  4478. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4479. Γöé Flag               Γöé Description                            Γöé
  4480. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4481. ΓöéFDS_APPLYBUTTON     ΓöéSpecifying this flag causes an          Γöé
  4482. Γöé                    Γöéadditional Apply Button to be displayed.Γöé
  4483. Γöé                    ΓöéThis is useful when the dialog is not   Γöé
  4484. Γöé                    Γöérun modal.                              Γöé
  4485. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4486. ΓöéFDS_CENTER          ΓöéThis flag causes the dialog to be       Γöé
  4487. Γöé                    Γöécentered in its parent window.          Γöé
  4488. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4489. ΓöéFDS_ENABLEFILELB    ΓöéWhen a Save As dialog is used and this  Γöé
  4490. Γöé                    Γöéflag is specified, the file list box is Γöé
  4491. Γöé                    Γöéenabled for selection. Otherwise, the   Γöé
  4492. Γöé                    Γöéuser is not allowed to select an        Γöé
  4493. Γöé                    Γöéexisting file.                          Γöé
  4494. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4495. ΓöéFDS_HELPBUTTON      ΓöéDisplay a Help Button. The button has   Γöé
  4496. Γöé                    Γöéthe PM identifier DID_HELP_PB.          Γöé
  4497. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4498. ΓöéFDS_MULTIPLESEL     ΓöéAllow multiple selection of file names. Γöé
  4499. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4500. ΓöéFSD_OPEN_DIALOG     ΓöéCreate an open dialog.                  Γöé
  4501. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4502. ΓöéFDS_PRELOAD_VOLINFO ΓöéPreload the volume info (volume         Γöé
  4503. Γöé                    Γöéname,...).                              Γöé
  4504. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4505. ΓöéFDS_SAVEAS_DIALOG   ΓöéCreate a save as dialog.                Γöé
  4506. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4507.  
  4508. Window flags which can be specified for file dialogs 
  4509.  
  4510. Every dialog must either contain FDS_OPEN_DIALOG or FDS_SAVEAS_DIALOG. 
  4511. Otherwise an error code is returned when calling -runModalFor:. 
  4512.  
  4513. Other flags, which can be specified are shown in table *. 
  4514.  
  4515.  
  4516. ΓòÉΓòÉΓòÉ 25.2.8. setOKTitle: ΓòÉΓòÉΓòÉ
  4517.  
  4518. -setOKTitle: (const char *) aTitle
  4519.  
  4520. Using -setOKTitle: the application can set the title string of the OK-Button 
  4521. displayed in the file dialog. Normally the title string is either Open or Save. 
  4522.  
  4523.  
  4524. ΓòÉΓòÉΓòÉ 25.2.9. runModalFor: ΓòÉΓòÉΓòÉ
  4525.  
  4526. -runModalFor: sender
  4527.  
  4528. -runModalFor: displays the file dialog and runs it as a modal dialog box in 
  4529. respect to sender, which must be an instance of Window or one of its 
  4530. subclasses. 
  4531.  
  4532. On successful completion this method returns a pointer to the FileDlg object, 
  4533. otherwise nil is returned. 
  4534.  
  4535. The result of running the dialog can be queried using -result. 
  4536.  
  4537.  
  4538. ΓòÉΓòÉΓòÉ 25.2.10. fileName ΓòÉΓòÉΓòÉ
  4539.  
  4540. -(char *) fileName
  4541.  
  4542. After successful execution of the file dialog, this method returns a pointer to 
  4543. the filename which was selected. 
  4544.  
  4545. This method only returns a valid string after successful execution using 
  4546. -runModalFor:. 
  4547.  
  4548.  
  4549. ΓòÉΓòÉΓòÉ 25.2.11. result ΓòÉΓòÉΓòÉ
  4550.  
  4551. -(ULONG) result
  4552.  
  4553. Using this method after running a file dialog using -runModalFor: you can query 
  4554. the result of the dialog. This will be DID_OK on successful completion, if the 
  4555. user selected a file and pressed the OK button or DID_CANCEL if the user 
  4556. cancelled the dialog execution using Cancel. 
  4557.  
  4558.  
  4559. ΓòÉΓòÉΓòÉ 26. Frame ΓòÉΓòÉΓòÉ
  4560.  
  4561. Inherits from: Window : Object 
  4562.  
  4563. Class description: 
  4564.  
  4565. Frame is a class designed to provide an interface to OS/2 PM windows of class 
  4566. WC_FRAME (Frame windows). 
  4567.  
  4568. At the moment no additional functionality to its superclass Window has been 
  4569. added. Special support for OS/2 PM Frame windows will be added in the future. 
  4570.  
  4571.  
  4572. ΓòÉΓòÉΓòÉ 27. Help ΓòÉΓòÉΓòÉ
  4573.  
  4574. Inherits from: Object 
  4575.  
  4576. Archiving 
  4577.  
  4578. Class description:  This class is used to enable your applications to use the 
  4579.                     PM online Help feature. Just create a help file using e.g. 
  4580.                     ipfc.exe and add an instance of Help to your application. 
  4581.  
  4582. Follow these steps to add help to your application: 
  4583.  
  4584.    1. Add a help menu to your main window or help buttons to your dialog 
  4585.       windows. 
  4586.    2. Allocate a help object and inialize it. 
  4587.    3. Associate the help object with your main window. This step can eventually 
  4588.       left out. Help will also work without setting an association. For normal 
  4589.       use, you should associate the Help object with your main window. 
  4590.    4. Create command bindings for your menu items/buttons 
  4591.  
  4592.  Before closing your application, free the help object again. 
  4593.  
  4594.  The object can display help for the standard topics: 
  4595.  
  4596.      "Help for Help" will provide help for using the OS/2 help facility 
  4597.       itself. 
  4598.      "Extended Help" will display the first (the topmost) help page. 
  4599.      "Help index" will display the help index of your help file. 
  4600.  
  4601.  Additionally the object can display a specified help page. 
  4602.  
  4603.  To enable online help in your programs, you have to create a HELPTABLE 
  4604.  resource and link the binary resource template to your application. In the 
  4605.  following a sample resource definition is shown: 
  4606.  
  4607.  
  4608.   /*
  4609.   * Help table definition
  4610.   */
  4611.  
  4612.   HELPTABLE 1000
  4613.   {
  4614.   HELPITEM 1000, 20800, 20800
  4615.   }
  4616.  
  4617.   /*
  4618.   * Main window subtable, includes menu item help
  4619.   */
  4620.  
  4621.   HELPSUBTABLE 20800
  4622.   SUBITEMSIZE 2
  4623.   {
  4624.   }
  4625.  
  4626.  This resource template defines a HELPTABLE resource having the resource 
  4627.  identifier 1000 which is the default help table identifier. The first help 
  4628.  page will have the help resource identifier 20800. This help resource 
  4629.  identifier is specified in the IPF source code of your help file. 
  4630.  
  4631.  
  4632. ΓòÉΓòÉΓòÉ 27.1. Instance Variables ΓòÉΓòÉΓòÉ
  4633.  
  4634.  
  4635. ΓòÉΓòÉΓòÉ 27.1.1. BOOLhelpEnabled ΓòÉΓòÉΓòÉ
  4636.  
  4637. This boolean variable is a flag showing, if the help object was initialized 
  4638. correctly and the online help feature can be used. 
  4639.  
  4640.  
  4641. ΓòÉΓòÉΓòÉ 27.1.2. HWNDhelpInstance ΓòÉΓòÉΓòÉ
  4642.  
  4643. helpInstance is used to store the OS/2 window handle (type HWND) of the help 
  4644. window. 
  4645.  
  4646.  
  4647. ΓòÉΓòÉΓòÉ 27.1.3. idhelpFileName ΓòÉΓòÉΓòÉ
  4648.  
  4649. This variable is a pointer to an instance of String. The object is used to 
  4650. store the name of the help file. Access is provided via -setStringValue: and 
  4651. -stringValue. 
  4652.  
  4653.  
  4654. ΓòÉΓòÉΓòÉ 27.1.4. idhelpWindowTitle ΓòÉΓòÉΓòÉ
  4655.  
  4656. Here a String object is pointed to used to store the title of the help window. 
  4657.  
  4658.  
  4659. ΓòÉΓòÉΓòÉ 27.1.5. ULONGhelpTable ΓòÉΓòÉΓòÉ
  4660.  
  4661. helpTable is the identifier of the help table of the help file. This help table 
  4662. must be specified in the resource file. 
  4663.  
  4664.  
  4665. ΓòÉΓòÉΓòÉ 27.1.6. HABhab ΓòÉΓòÉΓòÉ
  4666.  
  4667. hab is used to store the anchor block handle of the instance of StdApp used in 
  4668. your program. 
  4669.  
  4670.  
  4671. ΓòÉΓòÉΓòÉ 27.2. Methods ΓòÉΓòÉΓòÉ
  4672.  
  4673.  
  4674. ΓòÉΓòÉΓòÉ 27.2.1. init ΓòÉΓòÉΓòÉ
  4675.  
  4676. -init
  4677.  
  4678. This method initializes all instance variables to default values. 
  4679.  
  4680. -createHelpInstance is not called automatically. 
  4681.  
  4682.  
  4683. ΓòÉΓòÉΓòÉ 27.2.2. initForApp: helpFile ΓòÉΓòÉΓòÉ
  4684.  
  4685. -initForApp: (StdApp *) anApp helpfile: (char *)fileName
  4686.  
  4687. This method only calls the default initializer method -initForApp: helpFile: 
  4688. withTitle: helpTable: and passes the parameters to this method. The help window 
  4689. title is set to "Help". The default help table is assumed to have the resource 
  4690. identifier 1000. 
  4691.  
  4692. -createHelpInstance is called automatically in the end, so the help object will 
  4693. be usable after this method exits. 
  4694.  
  4695.  
  4696. ΓòÉΓòÉΓòÉ 27.2.3. initForApp: helpFile: ΓòÉΓòÉΓòÉ
  4697.  
  4698. withTitle: 
  4699.  
  4700. -initForApp: (StdApp *) anApp helpFile: (char *)fileName withTitle: (char *) helpTitle
  4701.  
  4702. This method passes the parameters to the default initializer method and assumes 
  4703. the resource identifier of the default HELPTABLE resource to be 1000. 
  4704.  
  4705. -createHelpInstance is called automatically in the end, so the help object will 
  4706. be usable after this method exits. 
  4707.  
  4708.  
  4709. ΓòÉΓòÉΓòÉ 27.2.4. initForApp: helpFile: withTitle: helpTable: ΓòÉΓòÉΓòÉ
  4710.  
  4711. -initForApp: (StdApp *) anApp helpFile: (char *)fileName withTitle: (char *) helpTitle helpTable: (ULONG)helpTable
  4712.  
  4713. This will be the default initializer method for objects of the Help class. 
  4714.  
  4715. The instance variables are initialized, hab is set to [anApp hab]; the name of 
  4716. the help file is specified by fileName, the title of the help window will be 
  4717. helpTitle. helpTable is the resource identifier of the default HELPTABLE 
  4718. resource. 
  4719.  
  4720. -createHelpInstance is called automatically in the end, so the help object will 
  4721. be usable after this method exits. 
  4722.  
  4723.  
  4724. ΓòÉΓòÉΓòÉ 27.2.5. free ΓòÉΓòÉΓòÉ
  4725.  
  4726. -free
  4727.  
  4728. -free deletes the objects allocated by this instance of Help and frees all 
  4729. other resources consumed by this object. 
  4730.  
  4731.  
  4732. ΓòÉΓòÉΓòÉ 27.2.6. associateWith: ΓòÉΓòÉΓòÉ
  4733.  
  4734. -associateWith: aWindow
  4735.  
  4736. Before using a help object with your main window, you should associate the help 
  4737. object with it. This is accomplished using this method. aWindow is a pointer to 
  4738. the window object you wish the Help object to be associated with. Normally, 
  4739. this will be a pointer to an instance of StdWindow or MainWindow. 
  4740.  
  4741.  
  4742. ΓòÉΓòÉΓòÉ 27.2.7. createHelpInstance ΓòÉΓòÉΓòÉ
  4743.  
  4744. -createHelpInstance
  4745.  
  4746. A call to this method will create the OS/2 help instance used to provide help. 
  4747. You only have to call this method manually if you initialized the object using 
  4748. -init. All other initializer methods will call -createHelpInstance 
  4749. automatically after completion. 
  4750.  
  4751.  
  4752. ΓòÉΓòÉΓòÉ 27.2.8. helpForHelp: ΓòÉΓòÉΓòÉ
  4753.  
  4754. -helpForHelp: sender
  4755.  
  4756. Display information on how to use the help system. This method can be bound 
  4757. directly to a menu item. 
  4758.  
  4759.  
  4760. ΓòÉΓòÉΓòÉ 27.2.9. helpExtended: ΓòÉΓòÉΓòÉ
  4761.  
  4762. -helpExtended: sender
  4763.  
  4764. Display the first help page according to the help table specified. This method 
  4765. can be used as an action method. 
  4766.  
  4767.  
  4768. ΓòÉΓòÉΓòÉ 27.2.10. helpIndex: ΓòÉΓòÉΓòÉ
  4769.  
  4770. -helpIndex: sender
  4771.  
  4772. This method will cause the help index to be displayed if one is available. It 
  4773. can be bound directly to a menu item. 
  4774.  
  4775.  
  4776. ΓòÉΓòÉΓòÉ 27.2.11. helpFor: ΓòÉΓòÉΓòÉ
  4777.  
  4778. -helpFor: sender
  4779.  
  4780. This method is used to display a special help topic. The topic is specified by 
  4781. the sending object. The number of the topic (which is the number also specified 
  4782. in the IPF source file) is specified by the tag instance variable of sender. It 
  4783. is queried via [sender tag]. This method can be bound directly to a menu item 
  4784. or a button control. 
  4785.  
  4786. If this method is bound to a button or a menu item via -bindCommand: 
  4787. withObject: selector:, the sending object is the window, in which the control 
  4788. resides. 
  4789.  
  4790. If bound to a button using the button's -bindWith: selector: method, the 
  4791. sending object will be the button itself. 
  4792.  
  4793.  
  4794. ΓòÉΓòÉΓòÉ 27.2.12. helpForTopic: ΓòÉΓòÉΓòÉ
  4795.  
  4796. -helpForTopic: (int) topic
  4797.  
  4798. If you want to provide help for a special help topic you can call 
  4799. -helpForTopic: directly. In this case topic is the help resource identifier of 
  4800. the help page you want to be displayed. 
  4801.  
  4802. Again, notice that topic is not related to the binary resource definition of 
  4803. the help table. The value of topic is only influenced by the help topic 
  4804. resource identifiers you specify in the IPF source code of your help file. 
  4805.  
  4806.  
  4807. ΓòÉΓòÉΓòÉ 27.2.13. helpFileName ΓòÉΓòÉΓòÉ
  4808.  
  4809. -helpFileName
  4810.  
  4811. This method returns a pointer to the String object storing the name of the help 
  4812. file. 
  4813.  
  4814. Modifying this object, i.e., setting a new help file name, will only make 
  4815. sense, if no help instance was created previously, which means that the object 
  4816. must have been initialized with -init only. 
  4817.  
  4818. A subsequent call to -createHelpInstance will create an OS/2 help instance 
  4819. usable in your application. 
  4820.  
  4821.  
  4822. ΓòÉΓòÉΓòÉ 27.2.14. helpWindowTitle ΓòÉΓòÉΓòÉ
  4823.  
  4824. -helpWindowTitle
  4825.  
  4826. This method returns a pointer to the instance of String used to store the title 
  4827. of the help window. 
  4828.  
  4829. Modifying this object, i.e., setting a new help window title, will only make 
  4830. sense, if no help instance was created previously, which means that the object 
  4831. must have been initialized with -init only. 
  4832.  
  4833. A subsequent call to -createHelpInstance will create an OS/2 help instance 
  4834. usable in your application. 
  4835.  
  4836.  
  4837. ΓòÉΓòÉΓòÉ 27.2.15. helpTable ΓòÉΓòÉΓòÉ
  4838.  
  4839. -(ULONG) helpTable
  4840.  
  4841. -helpTable returns the identifier of the default help table in the binary 
  4842. resource definition. 
  4843.  
  4844.  
  4845. ΓòÉΓòÉΓòÉ 27.2.16. setHelpTable: ΓòÉΓòÉΓòÉ
  4846.  
  4847. -setHelpTable: (ULONG) anId
  4848.  
  4849. This method sets the help table identifier of the default HELPTABLE in the 
  4850. binary resource file to anId. Changing this only makes sense before calling 
  4851. -createHelpInstance. 
  4852.  
  4853.  
  4854. ΓòÉΓòÉΓòÉ 28. InterfaceFile ΓòÉΓòÉΓòÉ
  4855.  
  4856. Inherits from: Object 
  4857.  
  4858. Archiving 
  4859.  
  4860. Class description: 
  4861.  
  4862. As most of the classes in the library now provide support for archiving, a 
  4863. class is provided to group many dialog objects (and also command bindings etc.) 
  4864. into one object to simplify archiving and unarchiving. 
  4865.  
  4866. This class is used as the root class for archiving by all files created by the 
  4867. program. 
  4868.  
  4869. Instances of this class can store objects, command bindings, bindings of 
  4870. instance variables of type id to other objects also stored and objects not 
  4871. archived but created at run-time. 
  4872.  
  4873. Only standard objects are supported now. 
  4874.  
  4875. The objects are stored with a unique string key associated. The objects can be 
  4876. queried either by index or by key. Querying by key is recommended because the 
  4877. index can change after archiving/unarchiving. 
  4878.  
  4879.  
  4880. ΓòÉΓòÉΓòÉ 28.1. Methods ΓòÉΓòÉΓòÉ
  4881.  
  4882.  
  4883. ΓòÉΓòÉΓòÉ 28.1.1. init ΓòÉΓòÉΓòÉ
  4884.  
  4885. -init
  4886.  
  4887. Initialize the object 
  4888.  
  4889.  
  4890. ΓòÉΓòÉΓòÉ 28.1.2. free ΓòÉΓòÉΓòÉ
  4891.  
  4892. -free
  4893.  
  4894. Free the memory allocated by this object 
  4895.  
  4896.  
  4897. ΓòÉΓòÉΓòÉ 28.1.3. freeObjects ΓòÉΓòÉΓòÉ
  4898.  
  4899. -freeObjects
  4900.  
  4901. Free this object and all objects stored. This will change in the future so that 
  4902. this method will only free the objects stored in the interface file and not the 
  4903. interface file itself. 
  4904.  
  4905. At the moment, this is the preferred destructor method. 
  4906.  
  4907.  
  4908. ΓòÉΓòÉΓòÉ 28.1.4. objectWithTitle: ΓòÉΓòÉΓòÉ
  4909.  
  4910. -objectWithTitle: (char *) aTitle
  4911.  
  4912. Search for an object having the title aTitle. If such an object could be found 
  4913. a pointer to it is returned. Otherwise nil is returned. 
  4914.  
  4915.  
  4916. ΓòÉΓòÉΓòÉ 29. ListBox ΓòÉΓòÉΓòÉ
  4917.  
  4918. Inherits from: FactoryWindow : DelegateWindow : Window : Object 
  4919.  
  4920. Archiving 
  4921.  
  4922. Class description: 
  4923.  
  4924. ListBox is a class designed to be associated to the OS/2 PM class WC_LISTBOX. 
  4925. The class provides methods to give access to the items in the Listbox window. 
  4926.  
  4927.  
  4928. ΓòÉΓòÉΓòÉ 29.1. Methods ΓòÉΓòÉΓòÉ
  4929.  
  4930.  
  4931. ΓòÉΓòÉΓòÉ 29.1.1. initWithId: andFlags: in: ΓòÉΓòÉΓòÉ
  4932.  
  4933. -initWithId: (ULONG) anId andFlags: (ULONG) flagsin: (Window *) parent
  4934.  
  4935. -initWithId: andFlags: in: can be used to create a listbox window at runtime. 
  4936. The parameters are the same as those used in the appropriate method of the 
  4937. class Button. 
  4938.  
  4939.  
  4940.  
  4941. Here you can see a standard listbox (left) and a
  4942. listbox window with an additional horizontal scroll bar.
  4943.  
  4944. Figure * on page * shows two forms of listbox windows. The left is a standard 
  4945. listbox with only one scroll bar---a vertical one. The right listbox control 
  4946. also has a horizontal scroll bar. 
  4947.  
  4948. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4949. Γöé Flag               Γöé Description                            Γöé
  4950. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4951. ΓöéLS_HORZSCROLL       ΓöéThis flags adds a horizontal scroll bar Γöé
  4952. Γöé                    Γöéto the list box window, if it is        Γöé
  4953. Γöé                    Γöéspecified at creation.                  Γöé
  4954. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4955. ΓöéLS_MULTIPLESEL      ΓöéNormally only one item in the list box  Γöé
  4956. Γöé                    Γöécan be selected once. If this flag is   Γöé
  4957. Γöé                    Γöéset, multiple selection is enabled.     Γöé
  4958. Γöé                    ΓöéCurrently querying the multiple         Γöé
  4959. Γöé                    Γöéselection is not supported by methods ofΓöé
  4960. Γöé                    Γöéthis class.                             Γöé
  4961. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4962. ΓöéLS_EXTENDEDSEL      ΓöéSpecifying this flag enables the        Γöé
  4963. Γöé                    Γöéextended selection user interface of theΓöé
  4964. Γöé                    Γöélist box window.                        Γöé
  4965. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4966. ΓöéLS_OWNERDRAW        ΓöéThis flag tells the list box not to drawΓöé
  4967. Γöé                    Γöéthe items itself. Appropriate messages  Γöé
  4968. Γöé                    Γöéare sent to the owner of the list box,  Γöé
  4969. Γöé                    Γöéwhich has to draw them.                 Γöé
  4970. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4971. ΓöéLS_NOADJUSTPOS      ΓöéThis flag tells the list box not to     Γöé
  4972. Γöé                    Γöéadjust the size and position of the     Γöé
  4973. Γöé                    Γöéwindow. If this flag is set, maybe only Γöé
  4974. Γöé                    Γöépart of the first or last item shown is Γöé
  4975. Γöé                    Γöédrawn.                                  Γöé
  4976. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4977.  
  4978. LS_xxxx styles used at creation of a list box 
  4979.  
  4980. How a Listbox window appears depends on what control flags you specify in the 
  4981. parameter flags. Table * shows which control flags are possible and what effect 
  4982. is caused by specififying them. One ore more of the flags can be specified. 
  4983. These flags must be binary or-ed using the | operator. If none of them should 
  4984. be used, 0L should be given as flags parameter. 
  4985.  
  4986.  
  4987. ΓòÉΓòÉΓòÉ 29.1.2. insertItem: text: ΓòÉΓòÉΓòÉ
  4988.  
  4989. -insertItem: (SHORT) pos text: (char *)buffer
  4990.  
  4991. Using this method you can insert a new item into the Listbox.  pos is the 
  4992. position in the Listbox where the item shall be inserted. If pos is LIT_END, 
  4993. the item will be inserted as the last item in the Listbox. 
  4994.  
  4995. buffer is the title of the item to be inserted. This string is shown afterwards 
  4996. in the Listbox at the specified position. 
  4997.  
  4998. The first item in the Listbox is at position 0, the last at count - 1. 
  4999.  
  5000.  
  5001. ΓòÉΓòÉΓòÉ 29.1.3. count ΓòÉΓòÉΓòÉ
  5002.  
  5003. -(SHORT) count
  5004.  
  5005. -count returns the number of items which are currently in the listbox. 
  5006.  
  5007.  
  5008. ΓòÉΓòÉΓòÉ 29.1.4. selected ΓòÉΓòÉΓòÉ
  5009.  
  5010. -(SHORT) selected
  5011.  
  5012. -selected returns the position of the selected item. If no item is currently 
  5013. selected, a value below 0 is returned. 
  5014.  
  5015. Multiple selection is currently not supported by this class. If you want to 
  5016. query multiple selection you have to use the appropriate OS/2 API functions, or 
  5017. just wait untill the next version of this library is released. 
  5018.  
  5019.  
  5020. ΓòÉΓòÉΓòÉ 29.1.5. itemTextLength: ΓòÉΓòÉΓòÉ
  5021.  
  5022. -(SHORT) itemTextLength: (SHORT) pos
  5023.  
  5024. This method returns the length of the item text of the item at position pos. 
  5025. Only the number of characters in the item text is returned. Don't forget to 
  5026. allocate an extra character for the NULL at the end of the string before 
  5027. querying via -item: text:. 
  5028.  
  5029.  
  5030. ΓòÉΓòÉΓòÉ 29.1.6. item: text: ΓòÉΓòÉΓòÉ
  5031.  
  5032. -(char *) item: (SHORT) pos text: (char *) buffer
  5033.  
  5034. -item: text: copies the item text of the item at position  pos in the Listbox 
  5035. into the array of characters pointed to by buffer. This method assumes, there 
  5036. is enough space in  buffer to hold all of the item text, including the NULL at 
  5037. the end of the text. 
  5038.  
  5039. This method returns buffer. 
  5040.  
  5041. If buffer is NULL, a string is allocated via  malloc() to hold all of the item 
  5042. text. This string must be freed by the programmer later using free(). 
  5043.  
  5044.  
  5045. ΓòÉΓòÉΓòÉ 29.1.7. selectItem: ΓòÉΓòÉΓòÉ
  5046.  
  5047. -(SHORT) selectItem: (SHORT) pos
  5048.  
  5049. On calling this method the specified item at position pos will be selected. If 
  5050. pos is out of the range of the Listbox items, nothing happens. 
  5051.  
  5052.  
  5053. ΓòÉΓòÉΓòÉ 29.1.8. deleteItem: ΓòÉΓòÉΓòÉ
  5054.  
  5055. -(SHORT) deleteItem: (SHORT) pos
  5056.  
  5057. -deleteItem: will delete the item at position pos. If pos is out of the range 
  5058. of the listbox items, no item gets deleted. 
  5059.  
  5060. Deletion of the currently selected item can be accomplished by sending this 
  5061. message: 
  5062.  
  5063.  [listbox deleteItem: [listbox selected]]; 
  5064.  
  5065. Here listbox is a pointer to the ListBox object. 
  5066.  
  5067.  
  5068. ΓòÉΓòÉΓòÉ 29.1.9. deleteAll ΓòÉΓòÉΓòÉ
  5069.  
  5070. -(SHORT) deleteAll
  5071.  
  5072. -deleteAll deletes all items in the Listbox. 
  5073.  
  5074.  
  5075. ΓòÉΓòÉΓòÉ 29.1.10. handleMessage: withParams: and: ΓòÉΓòÉΓòÉ
  5076.  
  5077. -(MRESULT) handleMessage: (ULONG) msg withParams:(MPARAM) mp1 and: (MPARAM) mp2
  5078.  
  5079. This method is the message handler for the OS/2 messages originating from the 
  5080. OS/2 listbox object. The WM_CONTROL messages LN_KILLFOCUS, LN_SETFOCUS, 
  5081. LN_ENTER, LN_SCROLL and LN_SELECT are processed and the appropriate delegate 
  5082. methods are called if implemented. 
  5083.  
  5084.  
  5085. ΓòÉΓòÉΓòÉ 29.2. Methods implemented by the delegate ΓòÉΓòÉΓòÉ
  5086.  
  5087.  
  5088. ΓòÉΓòÉΓòÉ 29.2.1. enterPressed: ΓòÉΓòÉΓòÉ
  5089.  
  5090. -enterPressed: sender
  5091.  
  5092. Whenever the user presses the enter key or double-clicks on an item in the 
  5093. listbox control this delegate method gets called. 
  5094.  
  5095. sender is a pointer to the ListBox object. The return value of this method is 
  5096. ignored. 
  5097.  
  5098.  
  5099. ΓòÉΓòÉΓòÉ 29.2.2. focusLost: ΓòÉΓòÉΓòÉ
  5100.  
  5101. -focusLost: sender
  5102.  
  5103. If the listbox control loses the focus, i.e., the listbox is deselected, this 
  5104. delegate method will be called to permit your application perform some specific 
  5105. actions which are necessary. 
  5106.  
  5107. sender is a pointer to the ListBox object. The return value of this method is 
  5108. ignored. 
  5109.  
  5110.  
  5111. ΓòÉΓòÉΓòÉ 29.2.3. focusReceived: ΓòÉΓòÉΓòÉ
  5112.  
  5113. -focusReceived: sender
  5114.  
  5115. -focusReceived: is called when the listbox control receives the focus. 
  5116.  
  5117. sender is a pointer to the ListBox object. The return value of this method is 
  5118. ignored. 
  5119.  
  5120.  
  5121. ΓòÉΓòÉΓòÉ 29.2.4. itemWasSelected: ΓòÉΓòÉΓòÉ
  5122.  
  5123. -itemWasSelected: sender
  5124.  
  5125. Every time an item in the listbox control is selected by a user action this 
  5126. method of the delegate object is called. Here you can perform additional 
  5127. functions necessary on selection of an item in the listbox. 
  5128.  
  5129. sender is a pointer to the ListBox object. The return value of this method is 
  5130. ignored. 
  5131.  
  5132.  
  5133. ΓòÉΓòÉΓòÉ 29.2.5. listBoxWillScroll: ΓòÉΓòÉΓòÉ
  5134.  
  5135. -listBoxWillScroll: sender
  5136.  
  5137. Before the listbox control will scroll the list of items displayed in its 
  5138. interior, -listBoxWillScroll: gets called. 
  5139.  
  5140. sender is a pointer to the ListBox object. The return value of this method is 
  5141. ignored. 
  5142.  
  5143.  
  5144. ΓòÉΓòÉΓòÉ 30. MainWindow ΓòÉΓòÉΓòÉ
  5145.  
  5146. Inherits from: StdWindow : ActionWindow : DelegateWindow : Window : Object 
  5147.  
  5148. Class description: 
  5149.  
  5150. This class is only provided for simplification purposes. It extends its 
  5151. superclass StdWindow by means of specifying default flags when using the 
  5152. methods -initWithId: and -initWithId: andFlags:. Additionally the window will 
  5153. post a WM_QUIT message when it is closed causing the application program to 
  5154. quit. 
  5155.  
  5156. By default, the flags 
  5157.  
  5158.      FCF_MINMAX 
  5159.      FCF_SHELLPOSITION 
  5160.      FCF_SYSMENU 
  5161.      FCF_TASKLIST 
  5162.      FCF_TITLEBAR 
  5163.  
  5164.  are specified at window creation when using -initWithId:. 
  5165.  
  5166.  
  5167. ΓòÉΓòÉΓòÉ 30.1. Methods ΓòÉΓòÉΓòÉ
  5168.  
  5169.  
  5170. ΓòÉΓòÉΓòÉ 30.1.1. initWithId: ΓòÉΓòÉΓòÉ
  5171.  
  5172. -initWithId: (ULONG) anId
  5173.  
  5174. This method only calls initWithId: andFlags: of its superclass StdWindow while 
  5175. specifying the window flags as described above. 
  5176.  
  5177.  
  5178. ΓòÉΓòÉΓòÉ 30.1.2. initWithId: andFlags: ΓòÉΓòÉΓòÉ
  5179.  
  5180. -initWithId: (ULONG) anId andFlags: (ULONG) flags
  5181.  
  5182. This method only calls initWithId: andFlags: of its superclass StdWindow. 
  5183.  
  5184.  
  5185. ΓòÉΓòÉΓòÉ 30.1.3. handleMessage: withParams: and: ΓòÉΓòÉΓòÉ
  5186.  
  5187. -(MRESULT) handleMessage: (ULONG) msg withParams:(MPARAM) mp1 and: (MPARAM) mp2
  5188.  
  5189. This method extends the functionality of its superclass StdWindow by posting a 
  5190. WM_QUIT message if the window gets closed. 
  5191.  
  5192.  
  5193. ΓòÉΓòÉΓòÉ 31. Menu ΓòÉΓòÉΓòÉ
  5194.  
  5195. Inherits from: Window : Object 
  5196.  
  5197. Archiving 
  5198.  
  5199. Class description: 
  5200.  
  5201. Menu is a class designed to provide an interface to OS/2 PM windows of class 
  5202. WC_MENU. Windows of these type are the  Actionbar or simply whole menus. 
  5203.  
  5204. The menu items not displayed are no windows on their own. They are created 
  5205. newly before they get displayed (when the menu they are in gets selected). 
  5206.  
  5207.  
  5208. ΓòÉΓòÉΓòÉ 31.1. Instance Variables ΓòÉΓòÉΓòÉ
  5209.  
  5210.  
  5211. ΓòÉΓòÉΓòÉ 31.1.1. iditemList ΓòÉΓòÉΓòÉ
  5212.  
  5213. itemList is used to store a list of menu items (instances of MenuItem belonging 
  5214. to the menu. For this purpose a SimpleList object is used. 
  5215.  
  5216.  
  5217. ΓòÉΓòÉΓòÉ 31.2. Methods ΓòÉΓòÉΓòÉ
  5218.  
  5219.  
  5220. ΓòÉΓòÉΓòÉ 31.2.1. init ΓòÉΓòÉΓòÉ
  5221.  
  5222. -init
  5223.  
  5224. -init just initializes a Menu object. itemList is initialized to be an empty 
  5225. list. No window object for the menu is created. 
  5226.  
  5227.  
  5228. ΓòÉΓòÉΓòÉ 31.2.2. initWithId: andFlags: ΓòÉΓòÉΓòÉ
  5229.  
  5230. -initWithId: (ULONG) anId andFlags: (ULONG)flags
  5231.  
  5232. This method just calls the default initializer method for this class, 
  5233. -initWithId: andFlags: in: and passes the parameters anId and flags. The parent 
  5234. window is specified to be nil. 
  5235.  
  5236. Table * shows which flags can be used when creating a menu window. 
  5237.  
  5238. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5239. Γöé Flag               Γöé Description                            Γöé
  5240. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5241. ΓöéMS_ACTIONBAR        ΓöéThis style causes the single menu items Γöé
  5242. Γöé                    Γöéin the menu to be displayed             Γöé
  5243. Γöé                    Γöéside-by-side. This style should be used Γöé
  5244. Γöé                    Γöéwhen creating a menu bar for some       Γöé
  5245. Γöé                    Γöéwindow.                                 Γöé
  5246. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5247. ΓöéMS_CONDITIONALCASCADΓöéThe style flag MS_CONDITIONALCASCADE    Γöé
  5248. Γöé                    Γöécauses the (sub-)me-nu to be a          Γöé
  5249. Γöé                    Γöéconditional cascade menu. Such menus getΓöé
  5250. Γöé                    Γöéopened only if the arrow to the right isΓöé
  5251. Γöé                    Γöéexplicitly selected.                    Γöé
  5252. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5253. ΓöéMS_TITLEBUTTON      ΓöéThis one can only be used together with Γöé
  5254. Γöé                    ΓöéMS_ACTIONBAR. Such menus can be used as Γöé
  5255. Γöé                    Γöébutton controls in the title bar of the Γöé
  5256. Γöé                    Γöéparent window.                          Γöé
  5257. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5258. ΓöéMS_VERTICALFLIP     ΓöéSpecifying this flag will cause         Γöé
  5259. Γöé                    Γöépull-down menus to be displayed above   Γöé
  5260. Γöé                    Γöéthe menu identifier not below as would  Γöé
  5261. Γöé                    Γöébe normal.                              Γöé
  5262. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5263.  
  5264. Menu creation flags 
  5265.  
  5266.  
  5267. ΓòÉΓòÉΓòÉ 31.2.3. initWithId: andFlags: in: ΓòÉΓòÉΓòÉ
  5268.  
  5269. -initWithId: (ULONG) anId andFlags: (ULONG) flags in:parent
  5270.  
  5271. -initWithId: andFlags: in: is the default initializer method of the class Menu. 
  5272. It will create an empty menu. 
  5273.  
  5274. See Table * for a list of style flags that can be used. parent is a pointer to 
  5275. the parent window of the menu. 
  5276.  
  5277. anId is the PM identifier of the menu window. 
  5278.  
  5279.  
  5280. ΓòÉΓòÉΓòÉ 31.2.4. free ΓòÉΓòÉΓòÉ
  5281.  
  5282. -free
  5283.  
  5284. -free will first free all menu items and submenus stored in itemList and then 
  5285. free the resources and destroy the menu window. 
  5286.  
  5287.  
  5288. ΓòÉΓòÉΓòÉ 31.2.5. insertItem: at: ΓòÉΓòÉΓòÉ
  5289.  
  5290. -insertItem: anItem at: (SHORT) pos
  5291.  
  5292. Using -insertItem: at: you can insert new menu items (instances of MenuItem) 
  5293. anItem at the position specified by pos. 
  5294.  
  5295. To append a new menu item to the end of the items already in the menu, specify 
  5296. pos as MIT_END. 
  5297.  
  5298. This method will automatically take care of 
  5299.  
  5300.  
  5301. ΓòÉΓòÉΓòÉ 31.2.6. enableItem: ΓòÉΓòÉΓòÉ
  5302.  
  5303. -enableItem: (USHORT) identifier
  5304.  
  5305. Calling this method, the menu item specified by identifier is enabled. After 
  5306. calling this method, the user can select this item. 
  5307.  
  5308.  
  5309. ΓòÉΓòÉΓòÉ 31.2.7. disableItem: ΓòÉΓòÉΓòÉ
  5310.  
  5311. -disableItem: (USHORT) identifier
  5312.  
  5313. Calling this method, the menu item specified by identifier is disabled. After 
  5314. calling this method, the user is not able to select this item. 
  5315.  
  5316. The menu item can be re-enabled using -enableItem: 
  5317.  
  5318.  
  5319. ΓòÉΓòÉΓòÉ 31.2.8. popup ΓòÉΓòÉΓòÉ
  5320.  
  5321. -popup: sender
  5322.  
  5323. This action method is used to display a popup menu on the screen. sender must 
  5324. be a window object. It is used as the owner of the popup menu. All commands are 
  5325. sent to sender. 
  5326.  
  5327.  
  5328. ΓòÉΓòÉΓòÉ 31.2.9. itemList ΓòÉΓòÉΓòÉ
  5329.  
  5330. -itemList
  5331.  
  5332. This method returns a pointer to the list of menu items for this menu. The 
  5333. returned object is an instance of SimpleList. 
  5334.  
  5335.  
  5336. ΓòÉΓòÉΓòÉ 32. MenuItem ΓòÉΓòÉΓòÉ
  5337.  
  5338. Inherits from: Object 
  5339.  
  5340. Class description: 
  5341.  
  5342. MenuItem is used to represent single menu items or sub-menus in a menu---either 
  5343. of pull-down or pop-up type. 
  5344.  
  5345. To create a menu having three menu items of which the second is a sub-menu 
  5346. containing two items, e.g. use the following piece of code: 
  5347.  
  5348.  
  5349. .
  5350. .
  5351. .
  5352.  
  5353. id menu = [[Menu alloc] initWithId: 1000 andFlags: 0];
  5354. id submenu = [[Menu alloc] initWithId: 2000 andFlags: 0];
  5355.  
  5356. /*
  5357. * First, insert two menu items into the sub-menu
  5358. */
  5359. [submenu insertItem: [[MenuItem alloc] initWithId: 2001
  5360. andTitle: sub-menu item 1 ]
  5361. at: MIT_END];
  5362.  
  5363. [submenu insertItem: [[MenuItem alloc] initWithId: 2002
  5364. andTitle: sub-menu item 2 ]
  5365. at: MIT_END];
  5366.  
  5367. /*
  5368. * now insert three menu items into the main menu, the second
  5369. * one being a sub-menu
  5370. */
  5371. [menu insertItem: [[MenuItem alloc] initWithId: 1001
  5372. andTitle: menu item 1 ]
  5373. at: MIT_END];
  5374.  
  5375. [menu insertItem: [[MenuItem alloc] initWithId: 1002
  5376. andTitle: sub-menu
  5377. subMenu: submenu]
  5378. at: MIT_END];
  5379.  
  5380. [menu insertItem: [[MenuItem alloc] initWithId: 1003
  5381. andTitle: menu item 3 ]
  5382. at: MIT_END];
  5383.  
  5384. .
  5385. .
  5386. .
  5387.  
  5388. This menu could e.g. be displayed by using [menu popup: nil]. 
  5389.  
  5390.  
  5391. ΓòÉΓòÉΓòÉ 32.1. Instance Variables ΓòÉΓòÉΓòÉ
  5392.  
  5393.  
  5394. ΓòÉΓòÉΓòÉ 32.1.1. ULONGpmId ΓòÉΓòÉΓòÉ
  5395.  
  5396. pmId is used to store the Presentation Manager identifier of the menu item. 
  5397. This identifier is used to bind commands from menu items to action methods. 
  5398.  
  5399.  
  5400. ΓòÉΓòÉΓòÉ 32.1.2. char *title ΓòÉΓòÉΓòÉ
  5401.  
  5402. This variable stores the title text of the menu item. It is allocated newly 
  5403. when initialized and freed by -free. 
  5404.  
  5405.  
  5406. ΓòÉΓòÉΓòÉ 32.1.3. idsubMenu ΓòÉΓòÉΓòÉ
  5407.  
  5408. If the menu item represents a sub-menu, subMenu is used to store a pointer to 
  5409. the sub-menu object. 
  5410.  
  5411.  
  5412. ΓòÉΓòÉΓòÉ 32.2. Methods ΓòÉΓòÉΓòÉ
  5413.  
  5414.  
  5415. ΓòÉΓòÉΓòÉ 32.2.1. init ΓòÉΓòÉΓòÉ
  5416.  
  5417. -init
  5418.  
  5419. -init simply initializes an instance of MenuItem. pmId is set to 0, no title 
  5420. text and no sub-menu are assumed to exist. 
  5421.  
  5422. Use -setPmId:, -setTitle: and -setSubMenu: to complete initialization or use 
  5423. one of the other initializer methods. 
  5424.  
  5425.  
  5426. ΓòÉΓòÉΓòÉ 32.2.2. initWithId: andTitle: ΓòÉΓòÉΓòÉ
  5427.  
  5428. -initWithId: (ULONG) anId andTitle: (char *)aTitle
  5429.  
  5430. -initWithId: andTitle: is the default initializer for "normal" menu items not 
  5431. representing a sub-menu. 
  5432.  
  5433. anId is the Presentation Manager identifier of the new menu item, aTitle will 
  5434. be the title text of the item. 
  5435.  
  5436.  
  5437. ΓòÉΓòÉΓòÉ 32.2.3. initWithId: andTitle. subMenu: ΓòÉΓòÉΓòÉ
  5438.  
  5439. -initWithId: (ULONG) anId andTitle: (char *) aTitlesubMenu: aSubMenu
  5440.  
  5441. This method is the default initializer for menu items representing sub-menus. 
  5442. anId is the Presentation Manager identifier of the newly created menu item, 
  5443. aTitle the title text and aSubMenu a pointer to the sub-menu (an instance of 
  5444. Menu). 
  5445.  
  5446.  
  5447. ΓòÉΓòÉΓòÉ 32.2.4. free ΓòÉΓòÉΓòÉ
  5448.  
  5449. -free
  5450.  
  5451. This method frees the memory allocated for the object and a sub-menu if one was 
  5452. associated with this item. 
  5453.  
  5454.  
  5455. ΓòÉΓòÉΓòÉ 32.2.5. setTitle: ΓòÉΓòÉΓòÉ
  5456.  
  5457. -setTitle: (char *) aTitle
  5458.  
  5459. -setTitle: sets the title of the menu item to aTitle. 
  5460.  
  5461.  
  5462. ΓòÉΓòÉΓòÉ 32.2.6. title ΓòÉΓòÉΓòÉ
  5463.  
  5464. -(char *) title
  5465.  
  5466. -title returns the title of the menu item. 
  5467.  
  5468.  
  5469. ΓòÉΓòÉΓòÉ 32.2.7. setPmId: ΓòÉΓòÉΓòÉ
  5470.  
  5471. -setPmId: (ULONG) anId
  5472.  
  5473. This method sets the Presentation Manager identifier of this menu item to anId. 
  5474.  
  5475.  
  5476. ΓòÉΓòÉΓòÉ 32.2.8. pmId ΓòÉΓòÉΓòÉ
  5477.  
  5478. -(ULONG) pmId
  5479.  
  5480. -pmId returns the Presentation Manager identifier of this menu item. 
  5481.  
  5482.  
  5483. ΓòÉΓòÉΓòÉ 32.2.9. setSubMenu: ΓòÉΓòÉΓòÉ
  5484.  
  5485. -setSubMenu: aSubMenu
  5486.  
  5487. For a menu item to become a sub-menu, just create a sub-menu (a normal instance 
  5488. of Menu and use -setSubMenu: to set this menu item to represent a sub-menu. 
  5489.  
  5490.  
  5491. ΓòÉΓòÉΓòÉ 32.2.10. subMenu ΓòÉΓòÉΓòÉ
  5492.  
  5493. -subMenu
  5494.  
  5495. If the menu item is a sub-menu, a pointer to the Menu instance of this sub-menu 
  5496. is returned by this method. Otherwise nil is returned. 
  5497.  
  5498.  
  5499. ΓòÉΓòÉΓòÉ 33. MultiLineEntryField ΓòÉΓòÉΓòÉ
  5500.  
  5501. Inherits from: FactoryWindow : DelegateWindow : Window : Object 
  5502.  
  5503. Archiving, Selection 
  5504.  
  5505. Class description: 
  5506.  
  5507. MultiLineEntryField is a class designed to provide an interface to OS/2 PM 
  5508. windows of class WC_MLE. 
  5509.  
  5510. Basic editing commands for the text in a multi-line entry field is supported 
  5511. via instance methods. Thse are -delete: at:, -insertText:, -insertText: at: and 
  5512. -appendText:. 
  5513.  
  5514. The whole text in the MLE can be accessed via setText: and text:. 
  5515.  
  5516. You must take care that it is not possible to pass more than 64KBytes of data 
  5517. between the multi-line entry field and your application at once. -setText: and 
  5518. -text: will only affect the first 64KBytes of data. 
  5519.  
  5520.  
  5521. ΓòÉΓòÉΓòÉ 33.1. Methods ΓòÉΓòÉΓòÉ
  5522.  
  5523.  
  5524. ΓòÉΓòÉΓòÉ 33.1.1. initWithId: andFlags: in: ΓòÉΓòÉΓòÉ
  5525.  
  5526. -initWithId: (ULONG) anId andFlags: (ULONG) flags in:(Window *) parent
  5527.  
  5528. Using -initWithId: andFlags: in: you can create an instance of class 
  5529. MultiLineEntryField and an OS/2 PM MLE window from scratch. anId is the PM 
  5530. identifier of the window, flags are the flags specified at creation of the MLE. 
  5531. parent represents the parent window of the object, where the MLE shall be 
  5532. inserted. 
  5533.  
  5534. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5535. Γöé Flag               Γöé Description                            Γöé
  5536. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5537. ΓöéMLS_BORDER          ΓöéThis flag causes a border to be drawn   Γöé
  5538. Γöé                    Γöéaround the MLE window                   Γöé
  5539. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5540. ΓöéMLS_READONLY        ΓöéDisable editing in the MLE window (     Γöé
  5541. Γöé                    Γöéread-only mode)                         Γöé
  5542. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5543. ΓöéMLS_WORDWRAP        ΓöéEnable word wrap                        Γöé
  5544. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5545. ΓöéMLS_HSCROLL         ΓöéDraw a horizontal scroll bar            Γöé
  5546. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5547. ΓöéMLS_VSCROLL         ΓöéDraw a vertical scroll bar              Γöé
  5548. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5549. ΓöéMLS_IGNORETAB       ΓöéIf this flag is set, the MLE window     Γöé
  5550. Γöé                    Γöéignores pressing the TAB key            Γöé
  5551. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5552. ΓöéMLS_DISABLEUNDO     ΓöéDisable the undo function of the MLE    Γöé
  5553. Γöé                    Γöéwindow.                                 Γöé
  5554. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5555.  
  5556. MLE_xxxx styles used at creation of an MLE window 
  5557.  
  5558. Table * lists all possible style flags to be used for instances of this class. 
  5559.  
  5560.  
  5561. ΓòÉΓòÉΓòÉ 33.1.2. indexForLine: ΓòÉΓòÉΓòÉ
  5562.  
  5563. -(long) indexForLine: (long) line
  5564.  
  5565. The text in a multi-line entry field is not organized in any way. Because most 
  5566. access to the text will refer to a special line, this method is provided to get 
  5567. the index of the first character in line line. 
  5568.  
  5569. E.g. to delete the first 5 characters in line 6, you could use 
  5570.  
  5571.  [mle delete: 5 at: [mle indexForLine: 6]] 
  5572.  
  5573.  
  5574. ΓòÉΓòÉΓòÉ 33.1.3. delete: at: ΓòÉΓòÉΓòÉ
  5575.  
  5576. -delete: (unsigned long) count at: (long)index
  5577.  
  5578. -delete: at: will delete count characters starting at position index in the 
  5579. text stored in the multi-line entry field. 
  5580.  
  5581. The indexing is a per-character index starting at 0 for the first character in 
  5582. the multi-line entry field and ends at the last character. Use -indexForLine: 
  5583. to query the index of the first character of a specific line of text. 
  5584.  
  5585.  
  5586. ΓòÉΓòÉΓòÉ 33.1.4. insertText: ΓòÉΓòÉΓòÉ
  5587.  
  5588. -insertText: (char *) aText
  5589.  
  5590. -inserText: will insert the string aText into the multi-line entry field at the 
  5591. current position. aText must be a pointer to a NULL-terminated string not 
  5592. longer than 64KBytes. 
  5593.  
  5594.  
  5595. ΓòÉΓòÉΓòÉ 33.1.5. insertText: at: ΓòÉΓòÉΓòÉ
  5596.  
  5597. -insertText: (char *) aText at: (long)index
  5598.  
  5599. -inserText: will insert the string aText into the multi-line entry field at the 
  5600. position specified by index. aText must be a pointer to a NULL-terminated 
  5601. string not longer than 64KBytes. 
  5602.  
  5603.  
  5604. ΓòÉΓòÉΓòÉ 33.1.6. appendText: ΓòÉΓòÉΓòÉ
  5605.  
  5606. -appendText: (char *) aText
  5607.  
  5608. Using -appendText: you can add the string aText to the end of the text already 
  5609. stored in the multi-line entry field. 
  5610.  
  5611.  
  5612. ΓòÉΓòÉΓòÉ 33.1.7. clearAll: ΓòÉΓòÉΓòÉ
  5613.  
  5614. -clearAll: sender
  5615.  
  5616. This action method is used to delete all text in the multi-line entry field. 
  5617. The method can be directly connected to a button or a menu item. 
  5618.  
  5619.  
  5620. ΓòÉΓòÉΓòÉ 34. NoteBook ΓòÉΓòÉΓòÉ
  5621.  
  5622. Inherits from: FactoryWindow : DelegateWindow : Window : Object 
  5623.  
  5624. Archiving 
  5625.  
  5626. Class description: 
  5627.  
  5628. NoteBook is a class designed to provide an interface to OS/2 PM windows of 
  5629. class WC_NOTEBOOK. 
  5630.  
  5631. Methods to add, delete and modify notebook pages are provided. 
  5632.  
  5633. A notebook is a window control able of displaying many different dialog 
  5634. windows. The dialog windows are ordered and put onto notebook pages and the 
  5635. user can turn the pages and switch to the dialogs as he wants. See the Settings 
  5636. notebook of most WPS objects for an example of this. 
  5637.  
  5638. Every notebook page can display a single dialog window and can have a line of 
  5639. text displayed in the status line of the window. Additionally, you can create 
  5640. major and minor tabs to support easy navigation through the different notebook 
  5641. pages. 
  5642.  
  5643.  
  5644. ΓòÉΓòÉΓòÉ 34.1. Methods ΓòÉΓòÉΓòÉ
  5645.  
  5646.  
  5647. ΓòÉΓòÉΓòÉ 34.1.1. initWithId: andFlags: in: ΓòÉΓòÉΓòÉ
  5648.  
  5649. -initWithId: (ULONG) anId andFlags: (ULONG) flags in:(Window *) parent
  5650.  
  5651. Using this method you can create a notebook window having the Presentation 
  5652. Manager identifier anId as a child window of parent. 
  5653.  
  5654. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5655. Γöé Flag               Γöé Description                            Γöé
  5656. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5657. ΓöéBKS_SOLIDBIND       ΓöéUse a solid binding for the notebook    Γöé
  5658. Γöé                    Γöéwindow. This is the default, if         Γöé
  5659. Γöé                    ΓöéBKS_SPIRALBIND is not specified.        Γöé
  5660. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5661. ΓöéBKS_SPIRALBIND      ΓöéUse spiral binding.                     Γöé
  5662. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5663.  
  5664. Flags determining the type of binding applied to a notebook control 
  5665.  
  5666. The look & feel of the notebook window is determined by the flags parameter. 
  5667.  
  5668. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5669. Γöé Flag               Γöé Description                            Γöé
  5670. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5671. ΓöéBKS_BACKPAGESBR     ΓöéThis is the default intersetion flag if Γöé
  5672. Γöé                    Γöéno flag described in this table is      Γöé
  5673. Γöé                    Γöéspecified. It causes the intersection ofΓöé
  5674. Γöé                    Γöéthe back pages to be in the bottom rightΓöé
  5675. Γöé                    Γöécorner.                                 Γöé
  5676. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5677. ΓöéBKS_BACKPAGESBL     ΓöéGiven this flag is specified, the       Γöé
  5678. Γöé                    Γöéintersection of the back pages will be  Γöé
  5679. Γöé                    Γöélocated in the bottom left corner.      Γöé
  5680. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5681. ΓöéBKS_BACKPAGESTR     ΓöéPut the intersection of the back pages  Γöé
  5682. Γöé                    Γöéinto the top right corner.              Γöé
  5683. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5684. ΓöéBKS_BACKPAGESTL     ΓöéThis flag causes the intersection to be Γöé
  5685. Γöé                    Γöéin the top left corner.                 Γöé
  5686. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5687.  
  5688. Notebook flags controlling the intersetion of the notebook's back pages 
  5689.  
  5690. The flags parameter is constructed by logically oring at most one flag of each 
  5691. group of flags. 
  5692.  
  5693. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5694. Γöé Flag               Γöé Description                            Γöé
  5695. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5696. ΓöéBKS_MAJORTABRIGHT   ΓöéPut the major tabs to the right side of Γöé
  5697. Γöé                    Γöéthe notebook window. This is the        Γöé
  5698. Γöé                    Γöédefault.                                Γöé
  5699. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5700. ΓöéBKS_MAJORTABLEFT    ΓöéThis flag will put the major tabs to theΓöé
  5701. Γöé                    Γöéleft.                                   Γöé
  5702. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5703. ΓöéBKS_MAJORTABTOP     ΓöéBKS_MAJORTABTOP will cause the major    Γöé
  5704. Γöé                    Γöétabs to be arranged on top of the       Γöé
  5705. Γöé                    Γöénotebook window.                        Γöé
  5706. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5707. ΓöéBKS_MAJORTABBOTTOM  ΓöéTo put the major tabs onto the bottom ofΓöé
  5708. Γöé                    Γöéthe notebook, specify this flag at      Γöé
  5709. Γöé                    Γöéwindow creation.                        Γöé
  5710. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5711.  
  5712. Flags controlling the location of the major tabs in a notebook control 
  5713.  
  5714. These groups are: 
  5715.  
  5716.    1. flags controlling the binding of the notebook (see Table *), 
  5717.    2. flags determining where the intersection of the notebook's back pages is 
  5718.       displayed (Table *), 
  5719.    3. the flags for controlling the location (Table *) and 
  5720.    4. the shape of the major tabs (see Table *). 
  5721.    5. Additionally the alignment for the tab text as shown in Table * and 
  5722.    6. the alignment of the status line text (Table *) can be specified. 
  5723.  
  5724.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5725.   Γöé Flag               Γöé Description                            Γöé
  5726.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5727.   ΓöéBKS_SQUARETABS      ΓöéUse square shaped major tabs. This is   Γöé
  5728.   Γöé                    Γöéthe default.                            Γöé
  5729.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5730.   ΓöéBKS_ROUNDEDTABS     ΓöéUse rounded major tabs.                 Γöé
  5731.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5732.   ΓöéBKS_POLYGONTABS     ΓöéThis flag causes the major tabs to be   Γöé
  5733.   Γöé                    Γöéshaped in a polygonal form.             Γöé
  5734.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5735.  
  5736.  To define the shape of the major tabs in a notebook control use the flags 
  5737.  shown in this table 
  5738.  
  5739.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5740.   Γöé Flag               Γöé Description                            Γöé
  5741.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5742.   ΓöéBKS_TABTEXTCENTER   ΓöéCenter the tab text. This is the defaultΓöé
  5743.   Γöé                    Γöéflag.                                   Γöé
  5744.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5745.   Γöé BKS_TABTEXTLEFT    ΓöéAlign the text appearing on the major   Γöé
  5746.   Γöé                    Γöétabs to the left.                       Γöé
  5747.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5748.   ΓöéBKS_TABTEXTRIGHT    ΓöéThis flag will cause the tab text to be Γöé
  5749.   Γöé                    Γöédisplayed right-justified.              Γöé
  5750.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5751.  
  5752.  These flags are used to specify the alignment of the tab text in a notebook 
  5753.  
  5754.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5755.   Γöé Flag               Γöé Description                            Γöé
  5756.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5757.   ΓöéBKS_STATUSTEXTLEFT  ΓöéDisplay the status line text            Γöé
  5758.   Γöé                    Γöéleft-justified. This is the default     Γöé
  5759.   Γöé                    Γöéflag.                                   Γöé
  5760.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5761.   ΓöéBKS_STATUSTEXTRIGHT ΓöéAlign the status line text to the right.Γöé
  5762.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5763.   ΓöéBKS_STATUSTEXTCENTERΓöéCenter the status line text.            Γöé
  5764.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5765.  
  5766.  Flags controlling the alignment of the status line text in a notebook window 
  5767.  
  5768.  Only one flag from each group can be specified. If no flag out of a single 
  5769.  group is specified, the one denoted as being the default flag is assumed. 
  5770.  
  5771.  
  5772. ΓòÉΓòÉΓòÉ 34.1.2. createTopPageWithStatusText: ΓòÉΓòÉΓòÉ
  5773.  
  5774. -(ULONG) createTopPageWithStatusText: (BOOL)stFlag
  5775.  
  5776. This method is used to create a new top page (the first page in a notebook 
  5777. control is called the top page) for the notebook window. 
  5778.  
  5779. stFlag determines whether status text shall be displayed on the top page. 
  5780. -createTopPageWithStatusText: returns the notebook's page identifier of the 
  5781. newly created page. This identifier is used to 
  5782.  
  5783.      set a dialog window to be displayed on the page, 
  5784.      set or modify the status text of the page if display of it is enabled, 
  5785.       and 
  5786.      is used to set the text displayed on the major tab if the page has one. 
  5787.  
  5788.  
  5789. ΓòÉΓòÉΓòÉ 34.1.3. createMajorTopPageWithStatusText: ΓòÉΓòÉΓòÉ
  5790.  
  5791. -(ULONG) createMajorTopPageWithStatusText: (BOOL)stFlag
  5792.  
  5793. This method is used to create a new top page containint a major tab for the 
  5794. notebook window. 
  5795.  
  5796. stFlag determines whether status text shall be displayed on the top page. 
  5797. -createMajorTopPageWithStatusText: returns the notebook's page identifier of 
  5798. the newly created page. This identifier is used to 
  5799.  
  5800.      set a dialog window to be displayed on the page, 
  5801.      set or modify the status text of the page if display of it is enabled, 
  5802.       and 
  5803.      is used to set the text displayed on the major tab if the page has one. 
  5804.  
  5805.  
  5806. ΓòÉΓòÉΓòÉ 34.1.4. createMinorTopPageWithStatusText: ΓòÉΓòÉΓòÉ
  5807.  
  5808. -(ULONG) createMinorTopPageWithStatusText: (BOOL)stFlag
  5809.  
  5810. This method is used to create a new top page containing a minor tab for the 
  5811. notebook window. 
  5812.  
  5813. stFlag determines whether status text shall be displayed on the top page. 
  5814. -createMinorTopPageWithStatusText: returns the notebook's page identifier of 
  5815. the newly created page. This identifier is used to 
  5816.  
  5817.      set a dialog window to be displayed on the page, 
  5818.      set or modify the status text of the page if display of it is enabled, 
  5819.       and 
  5820.      is used to set the text displayed on the major tab if the page has one. 
  5821.  
  5822.  
  5823. ΓòÉΓòÉΓòÉ 34.1.5. createLastPageWithStatusText: ΓòÉΓòÉΓòÉ
  5824.  
  5825. -(ULONG) createLastPageWithStatusText: (BOOL)stFlag
  5826.  
  5827. In contrast to -createTopPageWithStatusText: this method is used to create a 
  5828. new last page for the notebook control window. 
  5829.  
  5830. stFlag determines whether status text shall be displayed on the new bottom 
  5831. page. -createLastPageWithStatusText: returns the notebook's page identifier of 
  5832. the newly created page. This identifier is used to 
  5833.  
  5834.      set a dialog window to be displayed on the page, 
  5835.      set or modify the status text of the page if display of it is enabled, 
  5836.       and 
  5837.      is used to set the text displayed on the major tab if the page has one. 
  5838.  
  5839.  
  5840. ΓòÉΓòÉΓòÉ 34.1.6. createMajorLastPageWithStatusText: ΓòÉΓòÉΓòÉ
  5841.  
  5842. -(ULONG) createMajorLastPageWithStatusText: (BOOL)stFlag
  5843.  
  5844. In contrast to -createMajorTopPageWithStatusText: this method is used to create 
  5845. a new last page for the notebook control window. The page will have a major tab 
  5846. shaped according to the flags listed in Table *. 
  5847.  
  5848. stFlag determines whether status text shall be displayed on the new bottom 
  5849. page. -createMajorLastPageWithStatusText: returns the notebook's page 
  5850. identifier of the newly created page. This identifier is used to 
  5851.  
  5852.      set a dialog window to be displayed on the page, 
  5853.      set or modify the status text of the page if display of it is enabled, 
  5854.       and 
  5855.      is used to set the text displayed on the major tab if the page has one. 
  5856.  
  5857.  
  5858. ΓòÉΓòÉΓòÉ 34.1.7. createMinorLastPageWithStatusText: ΓòÉΓòÉΓòÉ
  5859.  
  5860. -(ULONG) createMinorLastPageWithStatusText: (BOOL)stFlag
  5861.  
  5862. In contrast to -createMinorTopPageWithStatusText: this method is used to create 
  5863. a new last page for the notebook control window. The page will have a minor 
  5864. tab. 
  5865.  
  5866. stFlag determines whether status text shall be displayed on the new bottom 
  5867. page. -createMinorLastPageWithStatusText: returns the notebook's page 
  5868. identifier of the newly created page. This identifier is used to 
  5869.  
  5870.      set a dialog window to be displayed on the page, 
  5871.      set or modify the status text of the page if display of it is enabled, 
  5872.       and 
  5873.      is used to set the text displayed on the major tab if the page has one. 
  5874.  
  5875.  
  5876. ΓòÉΓòÉΓòÉ 34.1.8. createPageBefore: withStatusText: ΓòÉΓòÉΓòÉ
  5877.  
  5878. -(ULONG) createPageBefore: (ULONG) pageIDwithStatusText: (BOOL) stFlag
  5879.  
  5880. This method will create a new page before the page specified by pageID. The 
  5881. page will neither have a major nor a minor tab. The display of status line text 
  5882. is controlled by stFlag. 
  5883.  
  5884.  
  5885. ΓòÉΓòÉΓòÉ 34.1.9. createMajorPageBefore: ΓòÉΓòÉΓòÉ
  5886.  
  5887. withStatusText: 
  5888.  
  5889. -(ULONG) createMajorPageBefore: (ULONG) pageIDwithStatusText: (BOOL) stFlag
  5890.  
  5891. This method will create a new page before the page specified by pageID. The 
  5892. page will have a major tab. The display of status line text is controlled by 
  5893. stFlag. 
  5894.  
  5895.  
  5896. ΓòÉΓòÉΓòÉ 34.1.10. createMinorPageBefore: ΓòÉΓòÉΓòÉ
  5897.  
  5898. withStatusText: 
  5899.  
  5900. -(ULONG) createMinorPageBefore: (ULONG) pageIDwithStatusText: (BOOL) stFlag
  5901.  
  5902. This method will create a new page before the page specified by pageID. The 
  5903. page will have a minor tab. The display of status line text is controlled by 
  5904. stFlag. 
  5905.  
  5906.  
  5907. ΓòÉΓòÉΓòÉ 34.1.11. createPageAfter: ΓòÉΓòÉΓòÉ
  5908.  
  5909. withStatusText: 
  5910.  
  5911. -(ULONG) createPageAfter: (ULONG) pageIDwithStatusText: (BOOL) statusFlag
  5912.  
  5913. This method will create a new page after the page specified by pageID. The page 
  5914. will neither have a major nor a minor tab. The display of status line text is 
  5915. controlled by stFlag. 
  5916.  
  5917.  
  5918. ΓòÉΓòÉΓòÉ 34.1.12. createMajorPageAfter: ΓòÉΓòÉΓòÉ
  5919.  
  5920. withStatusText: 
  5921.  
  5922. -(ULONG) createMajorPageAfter: (ULONG) pageIDwithStatusText: (BOOL) stFlag
  5923.  
  5924. This method will create a new page after the page specified by pageID. The page 
  5925. will have a major tab. The display of status line text is controlled by stFlag. 
  5926.  
  5927.  
  5928. ΓòÉΓòÉΓòÉ 34.1.13. createMinorPageAfter: ΓòÉΓòÉΓòÉ
  5929.  
  5930. withStatusText: 
  5931.  
  5932. -(ULONG) createMinorPageAfter: (ULONG) pageIDwithStatusText: (BOOL) stFlag
  5933.  
  5934. This method will create a new page after the page specified by pageID. The page 
  5935. will have a minor tab. The display of status line text is controlled by stFlag. 
  5936.  
  5937.  
  5938. ΓòÉΓòÉΓòÉ 34.1.14. deletePage: ΓòÉΓòÉΓòÉ
  5939.  
  5940. -deletePage: (ULONG) pageID
  5941.  
  5942. Using -deletePage: you can delete the notebook page denoted by its identifier 
  5943. pageID from the notebook window. 
  5944.  
  5945. A dialog window currently displayed on this page will not be freed. 
  5946.  
  5947.  
  5948. ΓòÉΓòÉΓòÉ 34.1.15. deleteAllPages ΓòÉΓòÉΓòÉ
  5949.  
  5950. -deleteAllPages
  5951.  
  5952. -deleteAllPages will delete every single page in the notebook control. 
  5953.  
  5954. Dialog windows currently displayed on one of the pages will not be freed. 
  5955.  
  5956.  
  5957. ΓòÉΓòÉΓòÉ 34.1.16. setStatusLineTextFor: to: ΓòÉΓòÉΓòÉ
  5958.  
  5959. -setStatusLineTextFor: (ULONG) pageID to: (char *)aString
  5960.  
  5961. This method is used to set the status line text for page pageID to aString. 
  5962.  
  5963.  
  5964. ΓòÉΓòÉΓòÉ 34.1.17. setTabTextFor: to: ΓòÉΓòÉΓòÉ
  5965.  
  5966. -setTabTextFor: (ULONG) pageID to: (char *)aString
  5967.  
  5968. This method is used to set the text displayed on the major tab of page pageID 
  5969. to aString. 
  5970.  
  5971.  
  5972. ΓòÉΓòÉΓòÉ 34.1.18. setMajorTabDimensions:: ΓòÉΓòÉΓòÉ
  5973.  
  5974. -setMajorTabDimensions: (USHORT) width : (USHORT)height
  5975.  
  5976. -setMajorTabDimensions:: will set the dimensions of the major tabs according to 
  5977. the parameters width and height. These parameters are in window coordinates, 
  5978. i.e., in pixels displayed on the screen. 
  5979.  
  5980. Use -sizeMajorTabs to automatically adjust the size of the major tabs to the 
  5981. text displayed there. 
  5982.  
  5983.  
  5984. ΓòÉΓòÉΓòÉ 34.1.19. sizeMajorTabs ΓòÉΓòÉΓòÉ
  5985.  
  5986. -sizeMajorTabs
  5987.  
  5988. -sizeMajorTabs is used to automatically adjust the size of the major tabs so 
  5989. that every tab's text will fit into the major tab. This method should be called 
  5990. after setting the tab text for every tab. 
  5991.  
  5992.  
  5993. ΓòÉΓòÉΓòÉ 34.1.20. setMinorTabDimensions:: ΓòÉΓòÉΓòÉ
  5994.  
  5995. -setMinorTabDimensions: (USHORT) width : (USHORT)height
  5996.  
  5997. This method is the counterpart to -setMajorTabDimensions:: and is used to set 
  5998. the dimensions of the notebook's minor tabs. 
  5999.  
  6000.  
  6001. ΓòÉΓòÉΓòÉ 34.1.21. setPageButtonDimensions:: ΓòÉΓòÉΓòÉ
  6002.  
  6003. -setPageButtonDimensions: (USHORT) width : (USHORT)height
  6004.  
  6005. The page buttons normally displayed on the bottom right edge of the notebook 
  6006. window are used to turn the pages without using the major or minor tabs. This 
  6007. method is used to set the size of the page buttons to width and height. 
  6008.  
  6009.  
  6010. ΓòÉΓòÉΓòÉ 34.1.22. setPage: to: ΓòÉΓòÉΓòÉ
  6011.  
  6012. -setPage: (ULONG) pageID to: (Window *)aWindow
  6013.  
  6014. As was mentioned before, the items displayed on notebook pages are dialog 
  6015. windows. Use -setPage: to: to display the dialog window denoted by aWindow on 
  6016. the page specified by its identifier pageID. 
  6017.  
  6018.  
  6019. ΓòÉΓòÉΓòÉ 34.1.23. selectPage: ΓòÉΓòÉΓòÉ
  6020.  
  6021. -selectPage: (ULONG) pageID
  6022.  
  6023. -selectPage: is used turn the notebook to display the page specified by its 
  6024. identifier pageID. Using this your application can select and display a 
  6025. specific notebook page. 
  6026.  
  6027.  
  6028. ΓòÉΓòÉΓòÉ 35. PresentationSpace ΓòÉΓòÉΓòÉ
  6029.  
  6030. Inherits from: Object 
  6031.  
  6032. Archiving 
  6033.  
  6034. Class description: 
  6035.  
  6036. Most of the operating system's API functions for drawing figures or bitmaps 
  6037. (Gpi functions) will use a virtual drawing space called the presentation space. 
  6038. This Objective C class is used to encapsulate some few of these drawing 
  6039. functions, mainly concerned with printint text in various sizes, in a 
  6040. user-friendly way. 
  6041.  
  6042. PresentationSpace can be seen as some kind of abstract superclass for all 
  6043. classes concerned with drawing. At the moment the only class available is 
  6044. Printer, a class providing easy access to OS/2 printer objects and permit your 
  6045. programs to produce some printed output in a simple manner. 
  6046.  
  6047. As the implementation of this class does not provide methods for all drawing 
  6048. functions supported by the OS/2 graphics programming interface (GPI) there is 
  6049. the possibility to use the Gpi functions for producing more complex figures. 
  6050. Use this classes' instance method -hps as the presentation space parameter 
  6051. needed by most of these functions. 
  6052.  
  6053. The origin of the coordinate space for presentation spaces as well as for its 
  6054. subclasses (e.g. Printer) is in the "lower left" corner of the presentation 
  6055. space. Only positive coordinates along the x-axis (to the right) and the y-axis 
  6056. (to the top) are allowed. 
  6057.  
  6058.  
  6059. ΓòÉΓòÉΓòÉ 35.1. Instance Variables ΓòÉΓòÉΓòÉ
  6060.  
  6061.  
  6062. ΓòÉΓòÉΓòÉ 35.1.1. HPShps ΓòÉΓòÉΓòÉ
  6063.  
  6064. This variable stores a handle for the OS/2 presentation space used by instances 
  6065. of this class. It can be queried using -hps and set via -setHps:. 
  6066.  
  6067.  
  6068. ΓòÉΓòÉΓòÉ 35.1.2. floatspacing ΓòÉΓòÉΓòÉ
  6069.  
  6070. Some of the high-level methods provided by this class are concerned with 
  6071. so-called string boxes. These string boxes are simply strings storing more than 
  6072. one line of text. The lines are separated by a carriage return (use "\n" in 
  6073. your Objective C programs) and will be printed on the presentation space as a 
  6074. block of lines. 
  6075.  
  6076. The lines are separated by (spacing-1) textHeight pixels. For normal text you 
  6077. should use a spacing ratio of 1.2. This is the default value set by the various 
  6078. initialization methods. 
  6079.  
  6080.  
  6081. ΓòÉΓòÉΓòÉ 35.1.3. LONGxResolution ΓòÉΓòÉΓòÉ
  6082.  
  6083. This instance variable is used to store the horizontal resolution (in dots per 
  6084. inch) of the currently selected font. 
  6085.  
  6086.  
  6087. ΓòÉΓòÉΓòÉ 35.1.4. LONGyResolution ΓòÉΓòÉΓòÉ
  6088.  
  6089. This instance variable is used to store the vertical resolution (in dots per 
  6090. inch) of the currently selected font. 
  6091.  
  6092.  
  6093. ΓòÉΓòÉΓòÉ 35.1.5. LONGtextHeight ΓòÉΓòÉΓòÉ
  6094.  
  6095. textHeight stores the height in pixels of the currently selected font. 
  6096.  
  6097.  
  6098. ΓòÉΓòÉΓòÉ 35.2. Methods ΓòÉΓòÉΓòÉ
  6099.  
  6100.  
  6101. ΓòÉΓòÉΓòÉ 35.2.1. init ΓòÉΓòÉΓòÉ
  6102.  
  6103. -init
  6104.  
  6105. This method initializes the object. spacing is set to 1.2, all other instance 
  6106. variables are reset to 0. 
  6107.  
  6108.  
  6109. ΓòÉΓòÉΓòÉ 35.2.2. setHPS ΓòÉΓòÉΓòÉ
  6110.  
  6111. -setHPS: (HPS) aHPS
  6112.  
  6113. The OS/2 presentation space which will be used for drawing is specified using 
  6114. -setHPS:. aHPS is the identifier of the presentation space as will be returned 
  6115. e.g. by WinGetPS(). 
  6116.  
  6117.  
  6118. ΓòÉΓòÉΓòÉ 35.2.3. hps ΓòÉΓòÉΓòÉ
  6119.  
  6120. -(HPS) hps
  6121.  
  6122. hps returns the handle of the currently used presentation space. 
  6123.  
  6124.  
  6125. ΓòÉΓòÉΓòÉ 35.2.4. widthInPels ΓòÉΓòÉΓòÉ
  6126.  
  6127. -(LONG) widthInPels
  6128.  
  6129. To query the width of the presentation space, which is the width of the drawing 
  6130. area, either use this method or -widthInMm. 
  6131.  
  6132. -widthInPels returns the width of the drawing area in pixels (pels is just a 
  6133. synonym for pixel, display point or picture element). 
  6134.  
  6135.  
  6136. ΓòÉΓòÉΓòÉ 35.2.5. widthInMm ΓòÉΓòÉΓòÉ
  6137.  
  6138. -(LONG) widthInMm
  6139.  
  6140. To query the width of the presentation space, which is the width of the drawing 
  6141. area, either use this method or -widthInPels. 
  6142.  
  6143. -widthInMm returns the width of the drawing area in millimeters. 
  6144.  
  6145.  
  6146. ΓòÉΓòÉΓòÉ 35.2.6. heightInPels ΓòÉΓòÉΓòÉ
  6147.  
  6148. -(LONG) heightInPels
  6149.  
  6150. To query the height of the presentation space, which is the height of the 
  6151. drawing area, either use this method or -heightInMm. 
  6152.  
  6153. -heightInPels returns the height of the drawing area in pixels (pels is just a 
  6154. synonym for pixel, display point or picture element). 
  6155.  
  6156.  
  6157. ΓòÉΓòÉΓòÉ 35.2.7. heightInMm ΓòÉΓòÉΓòÉ
  6158.  
  6159. -(LONG) heightInMm
  6160.  
  6161. To query the height of the presentation space, which is the height of the 
  6162. drawing area, either use this method or -heightInPels. 
  6163.  
  6164. -heightInMm returns the height of the drawing area in millimeters. 
  6165.  
  6166.  
  6167. ΓòÉΓòÉΓòÉ 35.2.8. xResolution ΓòÉΓòÉΓòÉ
  6168.  
  6169. -(LONG) xResolution
  6170.  
  6171. -xResolution returns the horizontal resolution of the currently selected font 
  6172. in dots per inch. 
  6173.  
  6174.  
  6175. ΓòÉΓòÉΓòÉ 35.2.9. yResolution ΓòÉΓòÉΓòÉ
  6176.  
  6177. -(LONG) yResolution
  6178.  
  6179. -xResolution returns the vertical resolution of the currently selected font in 
  6180. dots per inch. 
  6181.  
  6182.  
  6183. ΓòÉΓòÉΓòÉ 35.2.10. textHeight ΓòÉΓòÉΓòÉ
  6184.  
  6185. -(LONG) textHeight
  6186.  
  6187. This method returns the height of the currently selected font in pels. 
  6188.  
  6189.  
  6190. ΓòÉΓòÉΓòÉ 35.2.11. setSpacing ΓòÉΓòÉΓòÉ
  6191.  
  6192. -setSpacing: (float) ration
  6193.  
  6194. -setSpacing: is used to set the spacing factor for string boxes to ratio. For 
  6195. normal text you should use a spacing ratio of 1.2. 
  6196.  
  6197.  
  6198. ΓòÉΓòÉΓòÉ 35.2.12. spacing ΓòÉΓòÉΓòÉ
  6199.  
  6200. -(float) spacing
  6201.  
  6202. -spacing returns the spacing ration currently in use for string boxes. 
  6203.  
  6204.  
  6205. ΓòÉΓòÉΓòÉ 35.2.13. setFont: ΓòÉΓòÉΓòÉ
  6206.  
  6207. -setFont: (char *) fontName
  6208.  
  6209. This method selects a font by name. The point size currently selected is not 
  6210. changed. 
  6211.  
  6212. To select the Helvetica system font, you could e.g. use: 
  6213.  
  6214.  [presentationSpace setFont: "Helvetica"]; 
  6215.  
  6216.  
  6217. ΓòÉΓòÉΓòÉ 35.2.14. setFont: at: ΓòÉΓòÉΓòÉ
  6218.  
  6219. -setFont: (char *) fontName at: (LONG)pointSize
  6220.  
  6221. In addition to -setFont: this method will set the point size of the font 
  6222. fontName to pointSize. 
  6223.  
  6224. To change the currently used font to Courier at a size of 12 points, use: 
  6225.  
  6226.  [presentationSpace setFont: "Courier" at: 12]; 
  6227.  
  6228. pointSize is measured in typographic points; 72pt are approximately 1inch. 
  6229.  
  6230.  
  6231. ΓòÉΓòÉΓòÉ 35.2.15. setFontSize: ΓòÉΓòÉΓòÉ
  6232.  
  6233. -setFontSize: (LONG) pointSize
  6234.  
  6235. To change the size of the currently used font without changing the font itself 
  6236. use -setFontSize:. This method will change the size of the currently used font 
  6237. to pointSize points. 
  6238.  
  6239. pointSize is measured in typographic points; 72pt are approximately 1inch. 
  6240.  
  6241.  
  6242. ΓòÉΓòÉΓòÉ 35.2.16. stringWidth: ΓòÉΓòÉΓòÉ
  6243.  
  6244. -(LONG) stringWidth: (char *) aString
  6245.  
  6246. -stringWidth: returns the width of the string aString if printed using the 
  6247. currently selected font and size in pixels. 
  6248.  
  6249. The string must not contain special characters as carriage returns or line-feed 
  6250. characters. Use -stringBoxWidth: to determine the width of a string box. 
  6251.  
  6252. The height of a single string is always textHeight pixels. 
  6253.  
  6254.  
  6255. ΓòÉΓòÉΓòÉ 35.2.17. stringBoxWidth: ΓòÉΓòÉΓòÉ
  6256.  
  6257. -(LONG) stringBoxWidth: (char *)stringBox
  6258.  
  6259. This method returns the width of the string box in pixels. 
  6260.  
  6261. stringBox is allowed to contain line breaks (carriage return and line-feed 
  6262. characters). The single lines are always left-justified. 
  6263.  
  6264.  
  6265. ΓòÉΓòÉΓòÉ 35.2.18. stringBoxHeight: ΓòÉΓòÉΓòÉ
  6266.  
  6267. -(LONG) stringBoxHeight: (char *)stringBox
  6268.  
  6269. -stringBoxHeight: returns the height of the string box if printed using the 
  6270. currently selected font and size in pixels. 
  6271.  
  6272.  
  6273. ΓòÉΓòÉΓòÉ 35.2.19. string: ΓòÉΓòÉΓòÉ
  6274.  
  6275. -string: (char *) aString
  6276.  
  6277. This method is used to print a single line of text denoted by string using the 
  6278. currently selected font and size at the cursor position in the presentation 
  6279. space. Use -string: at:: to specify the position the text should be printed. 
  6280.  
  6281.  
  6282. ΓòÉΓòÉΓòÉ 35.2.20. string: at:: ΓòÉΓòÉΓòÉ
  6283.  
  6284. -string: (char *) aString at: (LONG) x : (LONG)y
  6285.  
  6286. Draw aString at the position denoted by the vector (x, y) with the current font 
  6287. and size. x and y are measured in pixels. 
  6288.  
  6289.  
  6290. ΓòÉΓòÉΓòÉ 35.2.21. stringBox: ΓòÉΓòÉΓòÉ
  6291.  
  6292. -stringBox: (char *) stringBox
  6293.  
  6294. Draw the string box at the current position with the current font and 
  6295. pointsize. The line spacing ratio can be set using -setSpacing:. 
  6296.  
  6297.  
  6298. ΓòÉΓòÉΓòÉ 35.2.22. stringBox: at:: ΓòÉΓòÉΓòÉ
  6299.  
  6300. -stringBox: (char *) stringBox at: (LONG) x : (LONG)y
  6301.  
  6302. Draw the string box starting at the coordinates specified by the vector (x, y). 
  6303. using the current font and pointsize. The line spacing ratio can be set using 
  6304. -setSpacing:. 
  6305.  
  6306. The following sample source code will produce formatted output in a 12 point 
  6307. Helvetica font at position (200/100). 
  6308.  
  6309.  
  6310. .
  6311. .
  6312. .
  6313. /*
  6314. * set the default font to Helvetica at 12pt
  6315. */
  6316. [ps setFont: Helvetica at: 12];
  6317.  
  6318. /*
  6319. * print a string box consisting of three lines at (200/100)
  6320. */
  6321. [ps stringBox: string box\nsecond line\nlast line of string box
  6322. at: 200:100];
  6323. .
  6324. .
  6325. .
  6326.  
  6327. In the above example a presentation space object ps is assumed to have been 
  6328. initialized. 
  6329.  
  6330.  
  6331. ΓòÉΓòÉΓòÉ 35.2.23. lineTo:: ΓòÉΓòÉΓòÉ
  6332.  
  6333. -lineTo: (LONG) x : (LONG) y
  6334.  
  6335. To draw a line from the current position to the point denoted by (x, y) use 
  6336. -lineTo::. 
  6337.  
  6338.  
  6339. ΓòÉΓòÉΓòÉ 35.2.24. lineFrom:: to:: ΓòÉΓòÉΓòÉ
  6340.  
  6341. -lineFrom: (LONG) x0 : (LONG) y0 to: (LONG) x : (LONG)y
  6342.  
  6343. -lineFrom:: to:: will draw a line from position (x0, y0) to (x, y). 
  6344.  
  6345.  
  6346. ΓòÉΓòÉΓòÉ 36. Printer ΓòÉΓòÉΓòÉ
  6347.  
  6348. Inherits from: PresentationSpace : Object 
  6349.  
  6350. Archiving 
  6351.  
  6352. Class description: 
  6353.  
  6354. The Printer class is provided to simplify access to the OS/2 printing 
  6355. capabilities. Using instances of this class will save you the troubles with the 
  6356. quite complicated OS/2 printing facilities. 
  6357.  
  6358. As a subclass of PresentationSpace all drawing and printing methods are 
  6359. inherited. If you need more functionality, use the Gpi functions of the OS/2 
  6360. graphics programming interface along with the presentation space hps created 
  6361. for the printer object. 
  6362.  
  6363. Printing a single job must start with a call to -beginSpool: appTitle: and end 
  6364. with -endSpool. 
  6365.  
  6366. As normally printing should not be done in the primary thread of your 
  6367. application and the Objective C run-time library is not thread-safe at the 
  6368. moment, the practical use of this class is a bit limited at the moment. 
  6369. Nevertheless it can be used for small printing jobs. 
  6370.  
  6371. A simple work-around for this limitation would be to create the printer object 
  6372. in the primary thread and start and end spooling there, but do the work in a 
  6373. secondary thread. You have to take care not to use any of the function of the 
  6374. Objective C run-time library in the secondary thread. This also includes 
  6375. sending messages to objects. Despite of this you could put the handle of the 
  6376. presentation space as can be queried via -hps into a global variable and just 
  6377. use the Gpi functions for drawing from the secondary thread. 
  6378.  
  6379.  
  6380. ΓòÉΓòÉΓòÉ 36.1. Instance Variables ΓòÉΓòÉΓòÉ
  6381.  
  6382.  
  6383. ΓòÉΓòÉΓòÉ 36.1.1. idsetupDialog ΓòÉΓòÉΓòÉ
  6384.  
  6385. setupDialog is an outlet instance variable which should take a pointer to a 
  6386. dialog window displayed in case the user wishes to make changes to the current 
  6387. printer set up. 
  6388.  
  6389. The dialog window must contain a listbox control with the Presentation Manager 
  6390. identifier 1000 and a Job Properties push button having PM id 1001. The listbox 
  6391. is automatically initialized when the setup dialog is displayed. 
  6392.  
  6393. Use -setSetupDialog: and -setupDialog for access to this variable and 
  6394. -printerSetup: to display the setup dialog. 
  6395.  
  6396.  
  6397. ΓòÉΓòÉΓòÉ 36.2. Methods ΓòÉΓòÉΓòÉ
  6398.  
  6399.  
  6400. ΓòÉΓòÉΓòÉ 36.2.1. initForApp: ΓòÉΓòÉΓòÉ
  6401.  
  6402. -initForApp: (StdApp *) anApp
  6403.  
  6404. This method is the default initializer method for Printer objects. You must 
  6405. pass a single parameter anApp which is a pointer to the instance of StdApp in 
  6406. use by your application. 
  6407.  
  6408.  
  6409. ΓòÉΓòÉΓòÉ 36.2.2. free ΓòÉΓòÉΓòÉ
  6410.  
  6411. -free
  6412.  
  6413. -free will terminate current print jobs and free the object. The printer setup 
  6414. dialog is not freed by this method. 
  6415.  
  6416.  
  6417. ΓòÉΓòÉΓòÉ 36.2.3. beginSpool: appTitle: ΓòÉΓòÉΓòÉ
  6418.  
  6419. -beginSpool: (char *) spoolTitle appTitle: (char *)appTitle
  6420.  
  6421. Before you start printing, you have to initialize a printing session by calling 
  6422. -beginSpool: appTitle:. spoolTitle is the job title of the print job which is 
  6423. to be started, appTitle the name of the application submitting the print job. 
  6424.  
  6425. You are not allowed to draw to the presentation space of the printer object 
  6426. before you initialized a print job. The job must be ended using -endSpool. 
  6427.  
  6428. After using -beginSpool: appTitle: you are not allowed to change the printer 
  6429. properties using -printerSetup: or -jobProperties:. 
  6430.  
  6431.  
  6432. ΓòÉΓòÉΓòÉ 36.2.4. endSpool ΓòÉΓòÉΓòÉ
  6433.  
  6434. -endSpool
  6435.  
  6436. A call to -endSpool will end the current print job and send all data to the 
  6437. printer. You must call this method to close a job. 
  6438.  
  6439.  
  6440. ΓòÉΓòÉΓòÉ 36.2.5. newPage ΓòÉΓòÉΓòÉ
  6441.  
  6442. -newPage
  6443.  
  6444. Calling -newPage will finish the current page and send the data to the printer. 
  6445. Afterwards a new empty printing page will automatically be created for further 
  6446. use in the print job. 
  6447.  
  6448.  
  6449. ΓòÉΓòÉΓòÉ 36.2.6. printerSetup ΓòÉΓòÉΓòÉ
  6450.  
  6451. -printerSetup: sender
  6452.  
  6453. The action method printerSetup: is used to display the printer setup dialog and 
  6454. handle all changes the user made to the setup of the default printer. You are 
  6455. not allowed to call this method while a print job is running. 
  6456.  
  6457.  
  6458. ΓòÉΓòÉΓòÉ 36.2.7. setSetupDialog: ΓòÉΓòÉΓòÉ
  6459.  
  6460. -setSetupDialog: aSetupDialog
  6461.  
  6462. setSetupDialog: is used to set the outlet variable setupDiaog to aSetupDialog. 
  6463.  
  6464.  
  6465. ΓòÉΓòÉΓòÉ 36.2.8. setupDialog ΓòÉΓòÉΓòÉ
  6466.  
  6467. -setupDialog
  6468.  
  6469. This method returns a pointer to the current printer setup dialog stored in 
  6470. setupDialog. 
  6471.  
  6472.  
  6473. ΓòÉΓòÉΓòÉ 36.2.9. jobProperties: ΓòÉΓòÉΓòÉ
  6474.  
  6475. -jobProperties: sender
  6476.  
  6477. Using this method the Job Properties dialog is displayed. This method is 
  6478. normally called when the user presses the Job Properties push button in the 
  6479. printer setup dialog. 
  6480.  
  6481.  
  6482. ΓòÉΓòÉΓòÉ 36.2.10. setDefault ΓòÉΓòÉΓòÉ
  6483.  
  6484. -setDefault
  6485.  
  6486. setDefault re-initializes the printer object and uses the system's default 
  6487. printer as the currently selected printer. 
  6488.  
  6489.  
  6490. ΓòÉΓòÉΓòÉ 36.2.11. widthInPels ΓòÉΓòÉΓòÉ
  6491.  
  6492. -(LONG) widthInPels
  6493.  
  6494. To query the width of the presentation space of the printer page, which is the 
  6495. width of the drawing area, either use this method or -widthInMm. 
  6496.  
  6497. -widthInPels returns the width of the drawing area in pixels (pels is just a 
  6498. synonym for pixel, display point or picture element). 
  6499.  
  6500.  
  6501. ΓòÉΓòÉΓòÉ 36.2.12. widthInMm ΓòÉΓòÉΓòÉ
  6502.  
  6503. -(LONG) widthInMm
  6504.  
  6505. To query the width of the presentation space of the printer page, which is the 
  6506. width of the drawing area, either use this method or -widthInPels. 
  6507.  
  6508. -widthInMm returns the width of the drawing area in millimeters. 
  6509.  
  6510.  
  6511. ΓòÉΓòÉΓòÉ 36.2.13. heightInPels ΓòÉΓòÉΓòÉ
  6512.  
  6513. -(LONG) heightInPels
  6514.  
  6515. To query the height of the presentation space of the printer page, which is the 
  6516. height of the drawing area, either use this method or -heightInMm. 
  6517.  
  6518. -heightInPels returns the height of the drawing area in pixels (pels is just a 
  6519. synonym for pixel, display point or picture element). 
  6520.  
  6521.  
  6522. ΓòÉΓòÉΓòÉ 36.2.14. heightInMm ΓòÉΓòÉΓòÉ
  6523.  
  6524. -(LONG) heightInMm
  6525.  
  6526. To query the height of the presentation space of the printer page, which is the 
  6527. height of the drawing area, either use this method or -heightInPels. 
  6528.  
  6529. -heightInMm returns the height of the drawing area in millimeters. 
  6530.  
  6531.  
  6532. ΓòÉΓòÉΓòÉ 37. Profile ΓòÉΓòÉΓòÉ
  6533.  
  6534. Inherits from: PresentationSpace : Object 
  6535.  
  6536. Class description: 
  6537.  
  6538. As you will already have noticed, OS/2 applications tend to store their 
  6539. configuration in configuration files having the file extension "INI". These 
  6540. files are binary files providing access to the single configuration options via 
  6541. a textual key. 
  6542.  
  6543. This class was implemented to provide easy access to these configuration files. 
  6544. You can simply create your own "INI" files and store your configuration there 
  6545. or use the system-provided configuration files "OS2.INI" and "OS2SYS.INI". 
  6546.  
  6547. You should normally create your own configuration files to store your 
  6548. application's preferences, I do not think it is good programming practice to 
  6549. "abuse" the system-provided configuration files. Before using one of this files 
  6550. make up your mind if you would like any application you start mess up your 
  6551. system-wide configuration files. 
  6552.  
  6553. Every entry in a configuration file is qualified by two different keys, the 
  6554. first one is the called the section name which can be quite useful when storing 
  6555. configurations for multiple applications in a single file. Here you should use 
  6556. a unique string depending on your application's name. 
  6557.  
  6558. The second part is the entry's key string. This key must be unique for the 
  6559. section the entry is stored in. In different sections the same key can be used 
  6560. for storing different configuration data. 
  6561.  
  6562.  
  6563. ΓòÉΓòÉΓòÉ 37.1. Methods ΓòÉΓòÉΓòÉ
  6564.  
  6565.  
  6566. ΓòÉΓòÉΓòÉ 37.1.1. init ΓòÉΓòÉΓòÉ
  6567.  
  6568. -init
  6569.  
  6570. Initialize the object and its instance variables to default values. You should 
  6571. always use the initializer method -init: forApp: for an application-specific 
  6572. configuration file or -initUserProfile or -initSystemProfile for the 
  6573. system-wide configuration files "OS2.INI" and "OS2SYS.INI" and not this method. 
  6574.  
  6575.  
  6576. ΓòÉΓòÉΓòÉ 37.1.2. init: ΓòÉΓòÉΓòÉ
  6577.  
  6578. forApp: 
  6579.  
  6580. -init: (char *) name forApp: (StdApp *) app
  6581.  
  6582. This method is used to initialize the Profile object for an 
  6583. application-specific configuration file. The name of the configuration file is 
  6584. specified with the name parameter. app is a pointer to your program's instance 
  6585. of StdApp. 
  6586.  
  6587. You can either specify the full path to your configuration file or simply 
  6588. specify the files name without a path. In the latter case, the file will be 
  6589. opened or created in the current working directory. 
  6590.  
  6591. This method will either open an existing configuration file or create a new one 
  6592. if none could be found. 
  6593.  
  6594. You have to use lower case letters for the name of the configuration file or 
  6595. opening/creating the file will fail. 
  6596.  
  6597.  
  6598. ΓòÉΓòÉΓòÉ 37.1.3. initUserProfile ΓòÉΓòÉΓòÉ
  6599.  
  6600. -initUserProfile
  6601.  
  6602. -initUserProfile will initialize the object to read and write configuration 
  6603. data from/to the user profile "OS2.INI" normally found in your systems 
  6604. installation directory. 
  6605.  
  6606.  
  6607. ΓòÉΓòÉΓòÉ 37.1.4. initSystemProfile ΓòÉΓòÉΓòÉ
  6608.  
  6609. -initSystemProfile
  6610.  
  6611. -initSystemProfile will initialize the object to read and write configuration 
  6612. data from/to the system profile "OS2SYS.INI" normally found in your systems 
  6613. installation directory. 
  6614.  
  6615.  
  6616. ΓòÉΓòÉΓòÉ 37.1.5. free ΓòÉΓòÉΓòÉ
  6617.  
  6618. -free
  6619.  
  6620. The -free method will update the configuration data and close the configuration 
  6621. file. Afterwards the object itself is freed. 
  6622.  
  6623.  
  6624. ΓòÉΓòÉΓòÉ 37.1.6. deleteKey: section: ΓòÉΓòÉΓòÉ
  6625.  
  6626. -deleteKey: (char *) key section: (char *)section
  6627.  
  6628. -deleteKey: section: will delete the entry specified by the key string/section 
  6629. title pair (key/section). Although the entry is deleted, the file is not 
  6630. compressed automatically. This means that deleting keys will not cause the 
  6631. configuration file to shrink in space. 
  6632.  
  6633.  
  6634. ΓòÉΓòÉΓòÉ 37.1.7. readData: key: section: ΓòÉΓòÉΓòÉ
  6635.  
  6636. -(void *) readData: (void *) data key: (char *) keysection: (char *) section
  6637.  
  6638. This method is used to read a binary configuration entry from the configuration 
  6639. file. The configuration entry is stored in the memory block pointed to by data. 
  6640. The entry itself is specified by key and section. 
  6641.  
  6642. The memory block pointed to by data must be large enough for storing all the 
  6643. configuration data stored at the (key/section) pair. 
  6644.  
  6645. This method is normally used when retrieving non-character data. The following 
  6646. piece of source code will read in a variable of type long. 
  6647.  
  6648.  
  6649. long configdata;
  6650.  
  6651. [profile readData: &configdata key: my key section: my app ];
  6652.  
  6653. If the entry could be found data is returned, NULL otherwise. 
  6654.  
  6655. If you don't know how much data is stored for the specified configuration 
  6656. entry, use -sizeForKey: section: to query the data size or just read some part 
  6657. of the data using -readData: size: key: section:. 
  6658.  
  6659. If data is NULL enough space to hold the entry is allocated via malloc(). It is 
  6660. in the programmer's responsibility to free this area later using free(). 
  6661.  
  6662.  
  6663. ΓòÉΓòÉΓòÉ 37.1.8. readData: size: key: ΓòÉΓòÉΓòÉ
  6664.  
  6665. section: 
  6666.  
  6667. -(void *) readData: (void *) data size: (long) sizekey: (char *) key section: (char *) section
  6668.  
  6669. Just as the last method described, -readData: size: key: section: is used to 
  6670. read a binary configuration entry from the configuration file. In addition to 
  6671. -readData: key: section: an additional parameter size is specified which 
  6672. determines the maximum number of bytes the memory area pointed to by data can 
  6673. hold. 
  6674.  
  6675. If data is NULL enough space to hold the entry is allocated via malloc(). It is 
  6676. in the programmer's responsibility to free this area later using free(). 
  6677.  
  6678.  
  6679. ΓòÉΓòÉΓòÉ 37.1.9. readString: key: section: ΓòÉΓòÉΓòÉ
  6680.  
  6681. -(char *) readString: (char *) data key: (char *) keysection: (char *) section
  6682.  
  6683. -readString: key: section: is used to read a configuration entry being a string 
  6684. from the configuration file. 
  6685.  
  6686. data must either be a pointer to a memory area large enough for holding the 
  6687. entry or NULL, in which case the memory is allocated dynamically using 
  6688. malloc(). 
  6689.  
  6690.  
  6691. ΓòÉΓòÉΓòÉ 37.1.10. readString: size: ΓòÉΓòÉΓòÉ
  6692.  
  6693. key: section: 
  6694.  
  6695. -(char *) readString: (char *) data size: (long) sizekey: (char *) key section: (char *) section
  6696.  
  6697. -readString: key: section: is used to read a configuration entry being a string 
  6698. from the configuration file. 
  6699.  
  6700. data must either be a pointer to a memory area large enough for holding size 
  6701. bytes or NULL, in which case the memory is allocated dynamically using 
  6702. malloc(). 
  6703.  
  6704. If data is not NULL at most size characters of the configuration entry are 
  6705. copied. 
  6706.  
  6707.  
  6708. ΓòÉΓòÉΓòÉ 37.1.11. sizeForKey: section: ΓòÉΓòÉΓòÉ
  6709.  
  6710. -(long) sizeForKey: (char *) key section: (char *)section
  6711.  
  6712. This method returns the number of bytes stored for the entry specified by the 
  6713. (key/data) pair. 
  6714.  
  6715.  
  6716. ΓòÉΓòÉΓòÉ 37.1.12. writeData: size: key: section: ΓòÉΓòÉΓòÉ
  6717.  
  6718. -writeData: (void *) data size: (long) size key: (char*) key section: (char *) section
  6719.  
  6720. Use this method to write a block of binary data to a configuration file. The 
  6721. entry is stored in section section with the key identifier key. size bytes 
  6722. starting at the memory block pointed to by data will be stored. 
  6723.  
  6724. Use -readData: key: section: or -readData: size: key: section: to retrieve the 
  6725. configuration entry later. 
  6726.  
  6727.  
  6728. ΓòÉΓòÉΓòÉ 37.1.13. writeString: key: section: ΓòÉΓòÉΓòÉ
  6729.  
  6730. -writeString: (char *) data key: (char *) key section:(char *) section
  6731.  
  6732. -writeString: key: section: will store the string data in the configuration 
  6733. file with the key pair (key/section). 
  6734.  
  6735. Use -readString: key: section: or -readString: size: key: section: to retrieve 
  6736. the configuration entry later. 
  6737.  
  6738.  
  6739. ΓòÉΓòÉΓòÉ 38. PushButton ΓòÉΓòÉΓòÉ
  6740.  
  6741. Inherits from: Button : FactoryWindow : DelegateWindow : Window : Object 
  6742.  
  6743. Class description: 
  6744.  
  6745. The class PushButton is a subclass of Button. Its only purpose is to simplify 
  6746. creating a PM Button window for a special purpose. 
  6747.  
  6748. For a short description of an instance of this class see table *. Figure * 
  6749. shows an instance of this class. See the description of the class Button for 
  6750. access methods. 
  6751.  
  6752.  
  6753. ΓòÉΓòÉΓòÉ 38.1. Methods ΓòÉΓòÉΓòÉ
  6754.  
  6755.  
  6756. ΓòÉΓòÉΓòÉ 38.1.1. initWithId: andFlags: in: ΓòÉΓòÉΓòÉ
  6757.  
  6758. -initWithId: (ULONG) anId andFlags: (ULONG) flags in:(Window *) parent
  6759.  
  6760. This method initializes a newly created instance of  PushButton. Using this 
  6761. class and method is similar to creating a Button object while specifying the 
  6762. flag BS_PUSHBUTTON. 
  6763.  
  6764.  
  6765. ΓòÉΓòÉΓòÉ 39. RadioButton ΓòÉΓòÉΓòÉ
  6766.  
  6767. Inherits from: Button : FactoryWindow : DelegateWindow : Window : Object 
  6768.  
  6769. Class description: 
  6770.  
  6771. The class RadioButton is a subclass of Button. Its only purpose is to simplify 
  6772. creating a PM Button window for a special purpose. 
  6773.  
  6774. For a short description of an instance of this class see table *. Figure * 
  6775. shows an instance of this class. See the description of the class Button for 
  6776. access methods. 
  6777.  
  6778.  
  6779. ΓòÉΓòÉΓòÉ 39.1. Methods ΓòÉΓòÉΓòÉ
  6780.  
  6781.  
  6782. ΓòÉΓòÉΓòÉ 39.1.1. initWithId: andFlags: in: ΓòÉΓòÉΓòÉ
  6783.  
  6784. -initWithId: (ULONG) anId andFlags: (ULONG) flags in:(Window *) parent
  6785.  
  6786. This method initializes a newly created instance of  RadioButton. Using this 
  6787. class and method is similar to creating a Button object while specifying the 
  6788. flag BS_RADIOBUTTON. 
  6789.  
  6790.  
  6791. ΓòÉΓòÉΓòÉ 40. ScrollBar ΓòÉΓòÉΓòÉ
  6792.  
  6793. Inherits from: FactoryWindow : DelegateWindow : Window : Object 
  6794.  
  6795. Archiving 
  6796.  
  6797. Class description: 
  6798.  
  6799. If more data is to be displayed in OS/2 PM windows or in window controls than 
  6800. would fit inside the control, scroll bars are used to let the user choose, 
  6801. which part of the data is to be shown. 
  6802.  
  6803.  
  6804. ΓòÉΓòÉΓòÉ 40.1. Methods ΓòÉΓòÉΓòÉ
  6805.  
  6806.  
  6807. ΓòÉΓòÉΓòÉ 40.1.1. initWithId: andFlags: in: ΓòÉΓòÉΓòÉ
  6808.  
  6809. -initWithId: (ULONG) anId andFlags: (ULONG) flagsin: (Window *) parent
  6810.  
  6811. This method is used to initialize a newly created instance of ScrollBar. 
  6812.  
  6813. The PM identifier of the window is specified with anId, the parent window, in 
  6814. which the scroll bar shall be displayed is set via parent. 
  6815.  
  6816. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6817. Γöé Flag               Γöé Description                            Γöé
  6818. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6819. ΓöéSBS_HORZ            ΓöéThis flags causes a horizontal scroll   Γöé
  6820. Γöé                    Γöébar to be created.                      Γöé
  6821. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6822. ΓöéSBS_VERT            ΓöéCreate a vertical scroll bar. Either    Γöé
  6823. Γöé                    Γöéthis flag, or SBS_HORZ must be          Γöé
  6824. Γöé                    Γöéspecified.                              Γöé
  6825. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6826. ΓöéSBS_AUTOTRACK       ΓöéAs more information is displayed, the   Γöé
  6827. Γöé                    Γöéslider automatically scrolls.           Γöé
  6828. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6829. ΓöéSBS_AUTOSIZE        ΓöéWhen this flag is specified, the size ofΓöé
  6830. Γöé                    Γöéthe slider automatically changes to     Γöé
  6831. Γöé                    Γöéreflect the amount of data to be        Γöé
  6832. Γöé                    Γöédisplayed.                              Γöé
  6833. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6834.  
  6835. Flags which can be specified at scroll bar creation 
  6836.  
  6837. flags is used to specify, what kind of scroll bar shall be created. See table * 
  6838. for more information on the flags. 
  6839.  
  6840.  
  6841.  
  6842. This figure shows a window containing a horizontal and a
  6843. vertical scroll bar.
  6844.  
  6845. Figure * shows examples of a horizontal scroll bar (left) and a vertical scroll 
  6846. bar (right). 
  6847.  
  6848.  
  6849. ΓòÉΓòÉΓòÉ 40.1.2. position ΓòÉΓòÉΓòÉ
  6850.  
  6851. -(SHORT) position
  6852.  
  6853. This method returns the current scroll bar position. This position is always in 
  6854. the range of [lowerBound;upperBound]. 
  6855.  
  6856.  
  6857. ΓòÉΓòÉΓòÉ 40.1.3. lowerBound ΓòÉΓòÉΓòÉ
  6858.  
  6859. -(SHORT) lowerBound
  6860.  
  6861. Return the lower bound of the scroll bar range. 
  6862.  
  6863.  
  6864. ΓòÉΓòÉΓòÉ 40.1.4. upperBound ΓòÉΓòÉΓòÉ
  6865.  
  6866. -(SHORT) upperBound
  6867.  
  6868. Return the upper bound of the scroll bar range. 
  6869.  
  6870.  
  6871. ΓòÉΓòÉΓòÉ 40.1.5. setPosition: ΓòÉΓòÉΓòÉ
  6872.  
  6873. -setPosition: (SHORT) position
  6874.  
  6875. -setPosition: sets the current position of the slider in respect to the upper 
  6876. and lower bounds. 
  6877.  
  6878.  
  6879. ΓòÉΓòÉΓòÉ 40.1.6. setScrollBar: withBounds:: ΓòÉΓòÉΓòÉ
  6880.  
  6881. -setScrollBar: (SHORT) position withBounds: (SHORT) lower: (SHORT) upper
  6882.  
  6883. This method sets the slider position and the upper and lower bounds of the 
  6884. scroll bar. The slider position must be in the range of [lower;upper]. 
  6885.  
  6886.  
  6887. ΓòÉΓòÉΓòÉ 40.1.7. setThumbSizeForVisible: of: ΓòÉΓòÉΓòÉ
  6888.  
  6889. -setThumbSizeForVisible: (SHORT) visible of: (SHORT) all
  6890.  
  6891. Using -setThumbSizeForVisible: of: the size of the slider is adjusted to match 
  6892. visible visible items of a total of all items. 
  6893.  
  6894.  
  6895. ΓòÉΓòÉΓòÉ 41. Slider ΓòÉΓòÉΓòÉ
  6896.  
  6897. Inherits from: FactoryWindow : DelegateWindow : Window : Object 
  6898.  
  6899. Archiving 
  6900.  
  6901. Class description: 
  6902.  
  6903. A Slider object is used to let the user visually choose a discrete value in a 
  6904. specified range. 
  6905.  
  6906. Currently, only creation of a Slider object is supported. 
  6907.  
  6908.  
  6909. ΓòÉΓòÉΓòÉ 41.1. Methods ΓòÉΓòÉΓòÉ
  6910.  
  6911.  
  6912. ΓòÉΓòÉΓòÉ 41.1.1. initWithId: andFlags: in: ΓòÉΓòÉΓòÉ
  6913.  
  6914. -initWithId: (ULONG) anId andFlags: (ULONG) flagsin: (Window *) parent
  6915.  
  6916. This method initializes the object with the PM identifier anId in its parent 
  6917. window parent. 
  6918.  
  6919.  
  6920.  
  6921. This figure shows a horizontal and a vertical slider
  6922. and a spinbutton
  6923.  
  6924. flags is used to specify creation flags for this window. 
  6925.  
  6926. Figure * shows a horizontal and a vertical slider control. 
  6927.  
  6928.  
  6929. ΓòÉΓòÉΓòÉ 42. SpinButton ΓòÉΓòÉΓòÉ
  6930.  
  6931. Inherits from: FactoryWindow : DelegateWindow : Window : Object 
  6932.  
  6933. Archiving 
  6934.  
  6935. Class description: 
  6936.  
  6937. A Spinbutton is an entry field where only numeric values can be entered. The 
  6938. object provides to arrows, which allow the user to increment or decrement the 
  6939. value currently shown in the accompanying entry field. 
  6940.  
  6941. Currently, only creation of a SpinButton object is supported. 
  6942.  
  6943.  
  6944. ΓòÉΓòÉΓòÉ 42.1. Methods ΓòÉΓòÉΓòÉ
  6945.  
  6946.  
  6947. ΓòÉΓòÉΓòÉ 42.1.1. initWithId: andFlags: in: ΓòÉΓòÉΓòÉ
  6948.  
  6949. -initWithId: (ULONG) anId andFlags: (ULONG) flagsin: (Window *) parent
  6950.  
  6951. This method initializes the object with the PM identifier anId in its parent 
  6952. window parent. 
  6953.  
  6954. flags is used to specify creation flags for this window. 
  6955.  
  6956. In figure * you can see an example of a spinbutton. 
  6957.  
  6958.  
  6959. ΓòÉΓòÉΓòÉ 43. Static ΓòÉΓòÉΓòÉ
  6960.  
  6961. Inherits from: FactoryWindow : DelegateWindow : Window : Object 
  6962.  
  6963. Archiving 
  6964.  
  6965. Class description: 
  6966.  
  6967. PM windows of this class are used to display static data (e.g. text or bitmaps) 
  6968. on the screen. 
  6969.  
  6970. Currently, only creation of a Static object is supported. 
  6971.  
  6972.  
  6973. ΓòÉΓòÉΓòÉ 43.1. Methods ΓòÉΓòÉΓòÉ
  6974.  
  6975.  
  6976. ΓòÉΓòÉΓòÉ 43.1.1. initWithId: andFlags: in: ΓòÉΓòÉΓòÉ
  6977.  
  6978. -initWithId: (ULONG) anId andFlags: (ULONG) flagsin: (Window *) parent
  6979.  
  6980. This method initializes the object with the PM identifier anId in its parent 
  6981. window parent. 
  6982.  
  6983. flags is used to specify creation flags for this window. 
  6984.  
  6985.  
  6986. ΓòÉΓòÉΓòÉ 44. StdApp ΓòÉΓòÉΓòÉ
  6987.  
  6988. Inherits from: Object 
  6989.  
  6990. Archiving 
  6991.  
  6992. Class description: 
  6993.  
  6994. This class is used to initialize and free all necessary PM recources needed to 
  6995. run the application. 
  6996.  
  6997. Every Application written using this library should use exactly one instance of 
  6998. this class. 
  6999.  
  7000.  
  7001. ΓòÉΓòÉΓòÉ 44.1. Instance Variables ΓòÉΓòÉΓòÉ
  7002.  
  7003.  
  7004. ΓòÉΓòÉΓòÉ 44.1.1. HABhab ΓòÉΓòÉΓòÉ
  7005.  
  7006. This variable is used to store the Handle Anchor Block of the application. 
  7007. Read-only access to this instance variable is provided via hab. 
  7008.  
  7009.  
  7010. ΓòÉΓòÉΓòÉ 44.1.2. HMQhmq ΓòÉΓòÉΓòÉ
  7011.  
  7012. hmq stores the handle of the Application Message Queue. Through this message 
  7013. queue all application-relevant messages are passed to the designated receiver 
  7014. of these messages. 
  7015.  
  7016. Because there is normally no need for the programmer to have direct access to 
  7017. this message queue, no methods for access to hmq are provided. 
  7018.  
  7019.  
  7020. ΓòÉΓòÉΓòÉ 44.2. Methods ΓòÉΓòÉΓòÉ
  7021.  
  7022.  
  7023. ΓòÉΓòÉΓòÉ 44.2.1. init ΓòÉΓòÉΓòÉ
  7024.  
  7025. -init
  7026.  
  7027. This is the standard initializer of this class. -init creates the Handle Anchor 
  7028. Block and the Application Message Queue. The appropriate handles are stored in 
  7029. hab respectively hmq. 
  7030.  
  7031.  
  7032. ΓòÉΓòÉΓòÉ 44.2.2. free ΓòÉΓòÉΓòÉ
  7033.  
  7034. -free
  7035.  
  7036. -free destroys the Application Message Queue and the Anchor Block. After 
  7037. calling this method, the program is ready to exit. 
  7038.  
  7039.  
  7040. ΓòÉΓòÉΓòÉ 44.2.3. run ΓòÉΓòÉΓòÉ
  7041.  
  7042. -run
  7043.  
  7044. -run fetches all messages and posts them to the appropriate receivers. This 
  7045. method exits when a WM_QUIT message is received. 
  7046.  
  7047.  
  7048. ΓòÉΓòÉΓòÉ 44.2.4. hab ΓòÉΓòÉΓòÉ
  7049.  
  7050. -(HAB) hab
  7051.  
  7052. hab returns the Handle Anchor Block of the application. 
  7053.  
  7054.  
  7055. ΓòÉΓòÉΓòÉ 44.2.5. loadIBFile: ΓòÉΓòÉΓòÉ
  7056.  
  7057. -loadIBFile: (char *) fileName
  7058.  
  7059. Using -loadIBFile: your program can load an interface file as created with the 
  7060. application. The objects residing in the interface file are created and all 
  7061. connections made between them are set up. 
  7062.  
  7063. This method returns a pointer to the InterfaceFile instance created while 
  7064. loading the interface file. Your application is responsible for freeing this 
  7065. object in the end. 
  7066.  
  7067. On failure, nil is returned. 
  7068.  
  7069. The interface file's name fileName is first treated to be a fully qualified 
  7070. path name. So if no path is specified, the file will be searched for in the 
  7071. current working directory. If the interface file cannot be found there, the 
  7072. directory the application is started from---where the executable file 
  7073. resides---is searched. 
  7074.  
  7075.  
  7076. ΓòÉΓòÉΓòÉ 45. StdDialog ΓòÉΓòÉΓòÉ
  7077.  
  7078. Inherits from: ActionWindow : DelegateWindow : Window : Object 
  7079.  
  7080. Archiving 
  7081.  
  7082. Class description: 
  7083.  
  7084. Instances of this class are used to represent OS/2 Dialog windows. At the 
  7085. moment dialogs are loaded from a resource file. This also initializes all 
  7086. controls (Buttons,  EntryFields,...) in the dialog which are defined in the 
  7087. resource file. Using -initWithId: andFlags: you can also create a dialog from 
  7088. scratch without having to create a dialog template in your application's 
  7089. resource file. 
  7090.  
  7091.  
  7092.  
  7093. This figure shows a simple dialog window containing three
  7094. Buttons, three Entryfields and a  drop-down Combobox.
  7095.  
  7096. Dialogs can be run modal for a given window, which means, while the dialog is 
  7097. active, no actions can be processed in the specified parent window, or not 
  7098. modal, where dialogs behave just like normal OS/2 PM main windows. 
  7099.  
  7100. Figure * shows a simple dialog window. 
  7101.  
  7102.  
  7103. ΓòÉΓòÉΓòÉ 45.1. Instance Variables ΓòÉΓòÉΓòÉ
  7104.  
  7105.  
  7106. ΓòÉΓòÉΓòÉ 45.1.1. ULONGresult ΓòÉΓòÉΓòÉ
  7107.  
  7108. After a dialog is dismissed (closed), the result of the dialog is stored in the 
  7109. instance variable result. This result can be queried by using the instance 
  7110. method -result. 
  7111.  
  7112.  
  7113. ΓòÉΓòÉΓòÉ 45.1.2. BOOLrunning ΓòÉΓòÉΓòÉ
  7114.  
  7115. When a dialog is run either modal or not modal, this variable is set to YES. 
  7116. When the dialog is dismissed again, it is set back to NO. 
  7117.  
  7118. This variable is used as a flag to prevent one instance of a dialog to be run 
  7119. only once at a given time. 
  7120.  
  7121.  
  7122. ΓòÉΓòÉΓòÉ 45.1.3. ULONGcreateFlags ΓòÉΓòÉΓòÉ
  7123.  
  7124. This instance variable is used to preserve the flags specified at dialog 
  7125. creation. The variable can be queried using -createFlags and modified---even if 
  7126. it does not seem to make much sense to do so---via -setCreateFlags:. 
  7127.  
  7128.  
  7129. ΓòÉΓòÉΓòÉ 45.2. Methods ΓòÉΓòÉΓòÉ
  7130.  
  7131.  
  7132. ΓòÉΓòÉΓòÉ 45.2.1. initWithId: ΓòÉΓòÉΓòÉ
  7133.  
  7134. -initWithId: (ULONG) anId
  7135.  
  7136. -initWithId: will load a dialog resource from the main resource file, which is 
  7137. linked into the executable file. anId is a key value, which uniquely identifies 
  7138. the dialog to be loaded in the resource file. 
  7139.  
  7140. This method returns self if successful, nil otherwise. 
  7141.  
  7142.  
  7143. ΓòÉΓòÉΓòÉ 45.2.2. initWithId: andFlags: ΓòÉΓòÉΓòÉ
  7144.  
  7145. -initWithId: (ULONG) anId andFlags: (ULONG)flags
  7146.  
  7147. If you want to create a dialog window "from scratch", i.e., without using a 
  7148. binary dialog template in a resource file, you should use this method. 
  7149.  
  7150. Again, anId is the Presentation Manager identifier of the dialog window to be 
  7151. created. flags can be used to specify various frame creation flags (FCF_xxx 
  7152. flags) as described for the class StdWindow. 
  7153.  
  7154. This method will return a pointer to a newly allocated and initialized dialog 
  7155. window. 
  7156.  
  7157.  
  7158. ΓòÉΓòÉΓòÉ 45.2.3. loadMenu ΓòÉΓòÉΓòÉ
  7159.  
  7160. -loadMenu
  7161.  
  7162. If the loaded dialog shall contain an Application menu, the menu must be 
  7163. explicitly loaded from the resource file by calling this method. The menu 
  7164. resource is assumed to have the same resource identifier as the dialog window 
  7165. itself. 
  7166.  
  7167. -loadMenu returns self. 
  7168.  
  7169.  
  7170. ΓòÉΓòÉΓòÉ 45.2.4. free ΓòÉΓòÉΓòÉ
  7171.  
  7172. -free
  7173.  
  7174. -free destroys the PM window and frees all resources allocated previously. 
  7175.  
  7176.  
  7177. ΓòÉΓòÉΓòÉ 45.2.5. createFlags ΓòÉΓòÉΓòÉ
  7178.  
  7179. -(ULONG) createFlags
  7180.  
  7181. -createFlags wil return the value currently stored in the variable createFlags. 
  7182.  
  7183.  
  7184. ΓòÉΓòÉΓòÉ 45.2.6. setCreateFlags: ΓòÉΓòÉΓòÉ
  7185.  
  7186. -setCreateFlags: (ULONG) flags
  7187.  
  7188. To modify the instance variable createFlags use this method. createFlags is set 
  7189. to the parameter flags. Changing the creation flags will not have any impact on 
  7190. the apperance of the dialog window. This method is only useful when writing the 
  7191. dialog window to a typed stream afterwards. The changes will be visible after 
  7192. reloading a dialog window from a stream. 
  7193.  
  7194.  
  7195. ΓòÉΓòÉΓòÉ 45.2.7. updateFrame ΓòÉΓòÉΓòÉ
  7196.  
  7197. -updateFrame
  7198.  
  7199. If you made any changes to the dialog's style flags by directly modifying data 
  7200. in the dialog's window words, you should call -updateFrame to execute these 
  7201. changes. 
  7202.  
  7203. E.g. to specify a resizable border for an already existing dialog window having 
  7204. a dialog border, you could write 
  7205.  
  7206.  
  7207. [dialog setWindowStyle: ([dialog windowStyle] & ~FS_DLGBORDER)
  7208. | FS_SIZEBORDER];
  7209. [dialog updateFrame];
  7210.  
  7211.  
  7212. ΓòÉΓòÉΓòÉ 45.2.8. result ΓòÉΓòÉΓòÉ
  7213.  
  7214. -(ULONG) result
  7215.  
  7216. -result returns the value stored in the instance variable  result. This 
  7217. variable result is set after the dialog gets dismissed. 
  7218.  
  7219. Therefore calling this method should be done only after the dialog has been 
  7220. dismissed. 
  7221.  
  7222.  
  7223. ΓòÉΓòÉΓòÉ 45.2.9. setTitle: ΓòÉΓòÉΓòÉ
  7224.  
  7225. -setTitle: (char *) aTitle
  7226.  
  7227. This method is used to set the dialog title to aTitle. To ensure that the 
  7228. changes are displayed immediately, you should call -updateFrame after setting a 
  7229. new dialog title. 
  7230.  
  7231.  
  7232. ΓòÉΓòÉΓòÉ 45.2.10. makeKeyAndOrderFront: ΓòÉΓòÉΓòÉ
  7233.  
  7234. -makeKeyAndOrderFront: sender
  7235.  
  7236. Calling -makeKeyAndOrderFront: results in the dialog becoming the active window 
  7237. (key window), where all PM messages are sent to. It is also brought to the 
  7238. front, if hidden by other windows, or currently invisible. 
  7239.  
  7240. Using this method, the dialog is not run as a modal dialog box. 
  7241.  
  7242.  
  7243. ΓòÉΓòÉΓòÉ 45.2.11. runModalFor: ΓòÉΓòÉΓòÉ
  7244.  
  7245. -runModalFor: sender
  7246.  
  7247. -runModalFor: does the same as the previously described method 
  7248. -makeKeyAndOrderFront:. In addition, the dialog is run modal for the window 
  7249. specified by sender. While the dialog is run, no message processing takes place 
  7250. in the sending window. 
  7251.  
  7252. -runModalFor: terminates, when the dialog gets dismissed. 
  7253.  
  7254. When sender is nil, the dialog is not run modal for any window, but 
  7255. runModalFor: still doesn't terminate while the dialog is not dismissed. This 
  7256. can be used for applications consisting of only a single (or more) dialogs, but 
  7257. no  StdWindow. In this case, don't call [application run], but [dialog 
  7258. runModalFor: nil] (application is the current instance of a StdApp, dialog the 
  7259. dialog to be run instead of a StdWindow). 
  7260.  
  7261.  
  7262. ΓòÉΓòÉΓòÉ 45.2.12. dismiss: ΓòÉΓòÉΓòÉ
  7263.  
  7264. -dismiss: sender
  7265.  
  7266. Calling -dismiss: causes the dialog---either running modal or not modal---to be 
  7267. dismissed. The instance variable running is reset to NO and the dialog is 
  7268. hidden from display. 
  7269.  
  7270. result is set to DID_CANCEL. 
  7271.  
  7272. You can bind this action method directly to a button or a menu item. 
  7273.  
  7274.  
  7275. ΓòÉΓòÉΓòÉ 45.2.13. dismissOK: ΓòÉΓòÉΓòÉ
  7276.  
  7277. -dismissOK: sender
  7278.  
  7279. Calling -dismissOK: causes the dialog---either running modal or not modal---to 
  7280. be dismissed. The instance variable running is reset to NO and the dialog is 
  7281. hidden from display. 
  7282.  
  7283. result is set to DID_OK. 
  7284.  
  7285.  
  7286. ΓòÉΓòÉΓòÉ 45.2.14. running ΓòÉΓòÉΓòÉ
  7287.  
  7288. -(BOOL) running
  7289.  
  7290. This method returns the state of the boolean instance variable running. After 
  7291. showing a dialog window using -makeKeyAndOrderFront: or -runModalFor: this 
  7292. variable is set to YES; when the dialog window gets dismissed again, it is set 
  7293. to NO. 
  7294.  
  7295.  
  7296. ΓòÉΓòÉΓòÉ 45.2.15. centerOnScreen: ΓòÉΓòÉΓòÉ
  7297.  
  7298. -centerOnScreen: sender
  7299.  
  7300. -centerOnScreen: will cause the dialog window to be centered on the screen. 
  7301.  
  7302.  
  7303. ΓòÉΓòÉΓòÉ 45.2.16. handleMessage: withParams: ΓòÉΓòÉΓòÉ
  7304.  
  7305. and: 
  7306.  
  7307. -(MRESULT) handleMessage: (ULONG) msg withParams:(MPARAM) mp1 and: (MPARAM) mp2
  7308.  
  7309. -handleMessage: withParams: and: gets called by the default dialog procedure. 
  7310.  
  7311. This function evaluates the type of message received and reacts by calling a 
  7312. delegate method, if implemented (see "Functions implemented by the delegate"). 
  7313.  
  7314. If the received message is of type COMMAND or  SYS_COMMAND, and a command 
  7315. binding for the command identifier has been set up, the corresponding Action in 
  7316. the set up  Target gets called. (see class ActionWindow) 
  7317.  
  7318. If the corresponding delegate function could not be found, the OS/2 default 
  7319. dialog procedure WinDefDlgProc is called. 
  7320.  
  7321.  
  7322. ΓòÉΓòÉΓòÉ 45.3. Methods implemented by the delegate ΓòÉΓòÉΓòÉ
  7323.  
  7324.  
  7325. ΓòÉΓòÉΓòÉ 45.3.1. windowDidMove: ΓòÉΓòÉΓòÉ
  7326.  
  7327. -windowDidMove: sender
  7328.  
  7329. After a window has been successfully moved, the delegate method 
  7330. -windowDidMove: gets called. 
  7331.  
  7332.  
  7333. ΓòÉΓòÉΓòÉ 45.3.2. windowDidResize: ΓòÉΓòÉΓòÉ
  7334.  
  7335. -windowDidResize: sender
  7336.  
  7337. tt windowDidResize: gets called after resizing a dialog. The newly achieved 
  7338. size of the window can be queried by sending the window (sender) appropriate 
  7339. messages (width,  height). 
  7340.  
  7341.  
  7342. ΓòÉΓòÉΓòÉ 45.3.3. windowDidResizeFrom:: to::: ΓòÉΓòÉΓòÉ
  7343.  
  7344. -windowDidResizeFrom: (LONG) oldX : (LONG) oldY to:(LONG) newX : (LONG) newY : sender
  7345.  
  7346. -windowDidResizeFrom:: to::: is just the same as the previously described 
  7347. method -windowDidResize:. In contrast to this method, -windowDidResizeFrom:: 
  7348. to::: also sends the old (oldX, oldY) and new (newX, newY) width and height of 
  7349. the resized window. 
  7350.  
  7351. These values can be directly used without querying the width and height of the 
  7352. window via [sender width] and [sender height]. 
  7353.  
  7354. It can also be useful for some special purposes to know the width and height of 
  7355. the window before the process of resizing it. These parameters cannot be 
  7356. queried by using any of the methods of  sender. 
  7357.  
  7358.  
  7359. ΓòÉΓòÉΓòÉ 45.3.4. windowWillClose: ΓòÉΓòÉΓòÉ
  7360.  
  7361. -windowWillClose: sender
  7362.  
  7363. This function gets called if the StdDialog is about to close. If this function 
  7364. returns a non-nil value or the delegate object doesn't implement this method, 
  7365. the window will be closed. 
  7366.  
  7367. If---otherwise---the delegate returns nil, closing the window is stopped and 
  7368. the normal execution of the program continues. 
  7369.  
  7370. sender is a pointer to the sending instance of  StdDialog. 
  7371.  
  7372.  
  7373. ΓòÉΓòÉΓòÉ 45.3.5. buttonWasPressed:: ΓòÉΓòÉΓòÉ
  7374.  
  7375. -buttonWasPressed: (ULONG) buttonId : sender
  7376.  
  7377. Everytime a WM_COMMAND message is received by  -handleMessage: withParams: and: 
  7378. from a Pushbutton, this message is sent to the delegate of the StdDialog. 
  7379.  
  7380. buttonId is the OS/2 PM ID of the Button sending the  WM_COMMAND message. 
  7381. sender is a pointer to the sending instance of StdDialog. 
  7382.  
  7383. This method should return nil if the button event could be handled, a non-nil 
  7384. value otherwise. 
  7385.  
  7386.  
  7387. ΓòÉΓòÉΓòÉ 45.3.6. menuWasSelected:: ΓòÉΓòÉΓòÉ
  7388.  
  7389. -menuWasSelected: (ULONG) menuId : sender
  7390.  
  7391. Analogous to buttonWasPressed:: this delegate method is called whenever a menu 
  7392. item gets selected by the user. 
  7393.  
  7394. -menuWasSelected:: should return nil if the menu selection could be processed 
  7395. successfully, a non-nil value otherwise. 
  7396.  
  7397.  
  7398. ΓòÉΓòÉΓòÉ 45.3.7. commandPosted:: ΓòÉΓòÉΓòÉ
  7399.  
  7400. -commandPosted: (USHORT) origin : sender
  7401.  
  7402. Every time a command was posted and it could not be processed by 
  7403. -buttonWasPressed:: or -menuWasSelected::, or if one of these methods or both 
  7404. are not implemented by the window delegate, or the command does not result from 
  7405. a button or a menu item, this delegate method is called. 
  7406.  
  7407. -commandPosted:: should return nil, if the event could be processed 
  7408. successfully, a non-nil value otherwise. 
  7409.  
  7410.  
  7411. ΓòÉΓòÉΓòÉ 45.3.8. sysButtonWasPressed:: ΓòÉΓòÉΓòÉ
  7412.  
  7413. -sysButtonWasPressed: (ULONG) buttonID : sender
  7414.  
  7415. This method gets called, if a button posts a system command. It should react 
  7416. just alike -buttonWasPressed::. 
  7417.  
  7418.  
  7419. ΓòÉΓòÉΓòÉ 45.3.9. sysMenuWasSelected:: ΓòÉΓòÉΓòÉ
  7420.  
  7421. -sysMenuWasSelected: (ULONG) menuId : sender
  7422.  
  7423. -sysMenuWasSelected:: is the counterpart to  -menuWasSelected::, but this 
  7424. method only gets called, whenever a system menu item was selected. 
  7425.  
  7426.  
  7427. ΓòÉΓòÉΓòÉ 45.3.10. sysCommandPosted:: ΓòÉΓòÉΓòÉ
  7428.  
  7429. -sysCommandPosted: (USHORT) origin : sender
  7430.  
  7431. -sysCommandPosted:: is called by the window's  -handleMessage: withParams: and: 
  7432. whenever a system command was posted, and neither -sysButtonWasPressed:: and 
  7433. -sysMenuWasSelected:: return nil. 
  7434.  
  7435. Its behaviour should be analogous to -commandPosted::. 
  7436.  
  7437.  
  7438. ΓòÉΓòÉΓòÉ 45.3.11. handleMessage: withParams: and:: ΓòÉΓòÉΓòÉ
  7439.  
  7440. -(MRESULT) handleMessage: (ULONG) msg withParams:(MPARAM) mp1 and: mp2 : sender
  7441.  
  7442. Every time an event coult not be handle either by the window itself or by one 
  7443. of the delegate functions, -handleMessage: withParams: and:: gets called. So 
  7444. all types of events can be processed without the need to subclass StdDialog. 
  7445.  
  7446. The return type should always be converted explicitly to type  MRESULT. 
  7447.  
  7448. See also the StdDialog build in method -handleMessage: withParams: and:. 
  7449.  
  7450.  
  7451. ΓòÉΓòÉΓòÉ 46. StdWindow ΓòÉΓòÉΓòÉ
  7452.  
  7453. Inherits from: ActionWindow : DelegateWindow : Window : Object 
  7454.  
  7455. Archiving 
  7456.  
  7457. Class description: 
  7458.  
  7459. An instance of this class is a simple OS/2 PM Window, consisting of a frame 
  7460. window and a client window. It is possible to load resources like an Icon, a 
  7461. Menu Bar or an Accelerator Table. 
  7462.  
  7463.  
  7464.  
  7465. This figure shows an instance of the class  StdWindow. At creation of the window, the flags  FCF_MENU, FCF_SIZEBORDER and  FCF_ACCELTABLE were specified.
  7466.  
  7467. Normally there's only one StdWindow in an application, showing and handling the 
  7468. application's Menu Bar and some default informations. 
  7469.  
  7470. All messages of interest can be captured by an object called the delegate of 
  7471. the window. This object can then react to these messages. Normally there's no 
  7472. need to subclass this class. 
  7473.  
  7474. Figure * shows a StdWindow containing a menu bar. 
  7475.  
  7476. For information about simplifying creation of a StdWindow see the class 
  7477. description of MainWindow. 
  7478.  
  7479.  
  7480. ΓòÉΓòÉΓòÉ 46.1. Instance Variables ΓòÉΓòÉΓòÉ
  7481.  
  7482.  
  7483. ΓòÉΓòÉΓòÉ 46.1.1. HWNDframe ΓòÉΓòÉΓòÉ
  7484.  
  7485. The instance variable frame is used to store the window handle of the frame 
  7486. window, where the inherited variable  window is used to store the handle of the 
  7487. client window. 
  7488.  
  7489.  
  7490. ΓòÉΓòÉΓòÉ 46.1.2. ULONGcreateFlags ΓòÉΓòÉΓòÉ
  7491.  
  7492. This instance variable is used to preserve the flags specified at dialog 
  7493. creation. The variable can be queried using -createFlags and modified---even if 
  7494. it does not seem to make much sense to do so---via -setCreateFlags:. 
  7495.  
  7496.  
  7497. ΓòÉΓòÉΓòÉ 46.2. Methods ΓòÉΓòÉΓòÉ
  7498.  
  7499.  
  7500. ΓòÉΓòÉΓòÉ 46.2.1. initWithId: ΓòÉΓòÉΓòÉ
  7501.  
  7502. -initWithId: (ULONG) anId
  7503.  
  7504. This method is used to initialize an instance of the class  StdWindow. 
  7505.  
  7506. anId is the PM identification number of the window. 
  7507.  
  7508. This method creates the frame window and the client window. The client window 
  7509. is an instance of the OS/2 PM-class  WINDOW_CLASS. (Note the difference between 
  7510. Objective C classes and OS/2 PM-classes!) 
  7511.  
  7512. The frame window handle is stored in frame, the client window handle in window. 
  7513.  
  7514. The title of the window can be set via -setTitle:. 
  7515.  
  7516.  
  7517. ΓòÉΓòÉΓòÉ 46.2.2. initWithId: andFlags: ΓòÉΓòÉΓòÉ
  7518.  
  7519. -initWithId: (ULONG) anId andFlags: (ULONG)flags
  7520.  
  7521. This method is used to initialize an instance of the class  StdWindow. In 
  7522. contrast to init: id: you can specify some frame creation flags to specify the 
  7523. resources to be loaded. 
  7524.  
  7525. flags can be a combination of FCF_MENU, FCF_ICON and FCF_ACCELTABLE. FCF_MENU 
  7526. tells the object, that a Menu Bar should be loaded. The resource id of the Menu 
  7527. Bar must match the parameter anId. FCF_ICON is used to specify an Application 
  7528. Icon to be loaded and shown, whereas  FCF_ACCELTABLE loads an Accelerator 
  7529. Table. 
  7530.  
  7531. You should also specify the type of border to be drawn for the window. This can 
  7532. either be FCF_SIZEBORDER for a resizable border or FCF_BORDER for a normal 
  7533. border. A thin border can be created by specifying FCF_THINBORDER. 
  7534.  
  7535. If you, for example, want to load a Menu Bar and an Icon you have to specify 
  7536. FCF_MENU | FCF_ICON as flags. 
  7537.  
  7538.  
  7539. ΓòÉΓòÉΓòÉ 46.2.3. free ΓòÉΓòÉΓòÉ
  7540.  
  7541. -free
  7542.  
  7543. -free destroys the PM window and frees all resources allocated previously. 
  7544.  
  7545.  
  7546. ΓòÉΓòÉΓòÉ 46.2.4. createFlags ΓòÉΓòÉΓòÉ
  7547.  
  7548. -(ULONG) createFlags
  7549.  
  7550. -createFlags wil return the value currently stored in the variable createFlags. 
  7551.  
  7552.  
  7553. ΓòÉΓòÉΓòÉ 46.2.5. setCreateFlags: ΓòÉΓòÉΓòÉ
  7554.  
  7555. -setCreateFlags: (ULONG) flags
  7556.  
  7557. To modify the instance variable createFlags use this method. createFlags is set 
  7558. to the parameter flags. Changing the creation flags will not have any impact on 
  7559. the apperance of the window. This method is only useful when writing the window 
  7560. to a typed stream afterwards. The changes will be visible after reloading a 
  7561. window from a stream. 
  7562.  
  7563.  
  7564. ΓòÉΓòÉΓòÉ 46.2.6. setSize:::: ΓòÉΓòÉΓòÉ
  7565.  
  7566. -setSize: (LONG) x : (LONG) y : (LONG) w : (LONG) h
  7567.  
  7568. -setSize:::: sets the size of the window to (w/h) and its position to (x/y). 
  7569.  
  7570.  
  7571. ΓòÉΓòÉΓòÉ 46.2.7. setRect:: ΓòÉΓòÉΓòÉ
  7572.  
  7573. -setRect: (LONG) w : (LONG) h
  7574.  
  7575. Just as with -setSize:::: -setRect: is used to set the size of the window. In 
  7576. contrast to -setSize:::: the position of the window is not changed. 
  7577.  
  7578. The size of the window is set to (w/h). 
  7579.  
  7580.  
  7581. ΓòÉΓòÉΓòÉ 46.2.8. updateFrame ΓòÉΓòÉΓòÉ
  7582.  
  7583. -updateFrame
  7584.  
  7585. If you made any changes to the window's style flags by directly modifying data 
  7586. in the dialog's window words, you should call -updateFrame to execute these 
  7587. changes. 
  7588.  
  7589. E.g. to specify a resizable border for an already existing window having a 
  7590. dialog border, you could write 
  7591.  
  7592.  
  7593. [window setWindowStyle: ([window windowStyle] & ~FS_DLGBORDER)
  7594. | FS_SIZEBORDER];
  7595. [window updateFrame];
  7596.  
  7597.  
  7598. ΓòÉΓòÉΓòÉ 46.2.9. framexoffset ΓòÉΓòÉΓòÉ
  7599.  
  7600. -(LONG) framexoffset
  7601.  
  7602. -framexoffset returns the horizontal offset of the frame window relative to the 
  7603. lower left corner of its parent window (normally the desktop). 
  7604.  
  7605.  
  7606. ΓòÉΓòÉΓòÉ 46.2.10. frameyoffset ΓòÉΓòÉΓòÉ
  7607.  
  7608. -(LONG) frameyoffset
  7609.  
  7610. This method returns the vertical offset of the frame window relative to its 
  7611. parent window. 
  7612.  
  7613.  
  7614. ΓòÉΓòÉΓòÉ 46.2.11. framewidth ΓòÉΓòÉΓòÉ
  7615.  
  7616. -(LONG) framewidth
  7617.  
  7618. -framewidth returns the width of the frame window. 
  7619.  
  7620.  
  7621. ΓòÉΓòÉΓòÉ 46.2.12. frameheight ΓòÉΓòÉΓòÉ
  7622.  
  7623. -(LONG) frameheight
  7624.  
  7625. -frameheigth returns the heigth of the frame window. 
  7626.  
  7627.  
  7628. ΓòÉΓòÉΓòÉ 46.2.13. frame ΓòÉΓòÉΓòÉ
  7629.  
  7630. -(HWND) frame
  7631.  
  7632. -frame returns the OS/2 PM window handle of the frame window of the StdWindow. 
  7633.  
  7634.  
  7635. ΓòÉΓòÉΓòÉ 46.2.14. setTitle: ΓòÉΓòÉΓòÉ
  7636.  
  7637. -setTitle: (char *) aTitle
  7638.  
  7639. Using -setTitle: you can set the title of the window. This title appears in the 
  7640. TitleBar of the window and also in the tasklist. 
  7641.  
  7642. aTitle is the title to be set. 
  7643.  
  7644.  
  7645. ΓòÉΓòÉΓòÉ 46.2.15. makeKeyAndOrderFront: ΓòÉΓòÉΓòÉ
  7646.  
  7647. -makeKeyAndOrderFront: sender
  7648.  
  7649. Calling -makeKeyAndOrderFront: results in the StdWindow becoming the active 
  7650. window (key window), where all PM messages are sent to. It is also brought to 
  7651. the front, if hidden by other windows, or currently invisible. 
  7652.  
  7653.  
  7654. ΓòÉΓòÉΓòÉ 46.2.16. centerOnScreen: ΓòÉΓòÉΓòÉ
  7655.  
  7656. -centerOnScreen: sender
  7657.  
  7658. -centerOnScreen: will cause the window to be centered on the screen. 
  7659.  
  7660.  
  7661. ΓòÉΓòÉΓòÉ 46.2.17. handleMessage: withParams: and: ΓòÉΓòÉΓòÉ
  7662.  
  7663. -handleMessage: (ULONG) msg withParams: (MPARAM) mp1 and:(MPARAM) mp2
  7664.  
  7665. -handleMessage: withParams: and: gets called by the default window procedure 
  7666. for the OS/2 PM-class WINDOW_CLASS. 
  7667.  
  7668. This function evaluates the type of message received and reacts by calling a 
  7669. delegate method, if implemented (see "Functions implemented by the delegate"). 
  7670.  
  7671. If the received message is of type COMMAND or  SYS_COMMAND, and a command 
  7672. binding for the command identifier has been set up, the corresponding Action in 
  7673. the set up  Target gets called. (see class ActionWindow) 
  7674.  
  7675. If the corresponding delegate function could not be found, -handleMessage: 
  7676. withParams: and: of its precessor in the class hierarchy is called. 
  7677.  
  7678.  
  7679. ΓòÉΓòÉΓòÉ 46.3. Methods implemented by the delegate ΓòÉΓòÉΓòÉ
  7680.  
  7681.  
  7682. ΓòÉΓòÉΓòÉ 46.3.1. windowDidMove: ΓòÉΓòÉΓòÉ
  7683.  
  7684. -windowDidMove: sender
  7685.  
  7686. After a window has been successfully moved, the delegate method 
  7687. -windowDidMove: gets called. 
  7688.  
  7689.  
  7690. ΓòÉΓòÉΓòÉ 46.3.2. windowDidResize: ΓòÉΓòÉΓòÉ
  7691.  
  7692. -windowDidResize: sender
  7693.  
  7694. -windowDidResize: gets called after resizing a window. The newly achieved size 
  7695. of the window can be queried by sending the window (sender) appropriate 
  7696. messages (width,  height). 
  7697.  
  7698.  
  7699. ΓòÉΓòÉΓòÉ 46.3.3. windowDidResizeFrom:: to::: ΓòÉΓòÉΓòÉ
  7700.  
  7701. -windowDidResizeFrom: (LONG) oldX : (LONG) oldY to:(LONG) newX : (LONG) newY : sender
  7702.  
  7703. -windowDidResizeFrom:: to::: is just the same as the previously described 
  7704. method -windowDidResize:. In contrast to this method, -windowDidResizeFrom:: 
  7705. to::: also sends the old (oldX, oldY) and new (newX, newY) width and height of 
  7706. the resized window. 
  7707.  
  7708. These values can be directly used without querying the width and height of the 
  7709. window via [sender width] and [sender height]. 
  7710.  
  7711. It can also be useful for some special purposes to know the width and height of 
  7712. the window before the process of resizing it. These parameters cannot be 
  7713. queried by using any of the methods of  sender. 
  7714.  
  7715.  
  7716. ΓòÉΓòÉΓòÉ 46.3.4. windowWillClose: ΓòÉΓòÉΓòÉ
  7717.  
  7718. -windowWillClose: sender
  7719.  
  7720. This function gets called if the StdWindow is about to close. If this function 
  7721. returns a non-nil value or the delegate object doesn't implement this method, 
  7722. the window will be closed. 
  7723.  
  7724. If---otherwise---the delegate returns nil, closing the window is stopped and 
  7725. the normal execution of the program continues. 
  7726.  
  7727. sender is a pointer to the sending instance of  StdWindow. 
  7728.  
  7729.  
  7730. ΓòÉΓòÉΓòÉ 46.3.5. buttonWasPressed:: ΓòÉΓòÉΓòÉ
  7731.  
  7732. -buttonWasPressed: (ULONG) buttonId : sender
  7733.  
  7734. Everytime a WM_COMMAND message is received by  -handleMessage: withParams: and: 
  7735. from a Pushbutton, this message is sent to the delegate of the StdWindow. 
  7736.  
  7737. buttonId is the OS/2 PM ID of the Button sending the  WM_COMMAND message. 
  7738. sender is a pointer to the sending instance of StdWindow. 
  7739.  
  7740. This method should return nil if the button event could be handled, a non-nil 
  7741. value otherwise. 
  7742.  
  7743.  
  7744. ΓòÉΓòÉΓòÉ 46.3.6. menuWasSelected:: ΓòÉΓòÉΓòÉ
  7745.  
  7746. -menuWasSelected: (ULONG) menuId : sender
  7747.  
  7748. Analogous to -buttonWasPressed:: this delegate method is called whenever a menu 
  7749. item gets selected by the user. 
  7750.  
  7751. -menuWasSelected:: should return nil if the menu selection could be processed 
  7752. successfully, a non-nil value otherwise. 
  7753.  
  7754.  
  7755. ΓòÉΓòÉΓòÉ 46.3.7. commandPosted:: ΓòÉΓòÉΓòÉ
  7756.  
  7757. -commandPosted: (USHORT) origin : sender
  7758.  
  7759. Every time a command was posted and it could not be processed by 
  7760. -buttonWasPressed:: or -menuWasSelected::, or if one of these methods or both 
  7761. are not implemented by the window delegate, or the command does not result from 
  7762. a button or a menu item, this delegate method is called. 
  7763.  
  7764. -commandPosted:: should return nil, if the event could be processed 
  7765. successfully, a non-nil value otherwise. 
  7766.  
  7767.  
  7768. ΓòÉΓòÉΓòÉ 46.3.8. sysButtonWasPressed:: ΓòÉΓòÉΓòÉ
  7769.  
  7770. -sysButtonWasPressed: (ULONG) buttonID : sender
  7771.  
  7772. This method gets called, if a button posts a system command. It should react 
  7773. just alike -buttonWasPressed::. 
  7774.  
  7775.  
  7776. ΓòÉΓòÉΓòÉ 46.3.9. sysMenuWasSelected:: ΓòÉΓòÉΓòÉ
  7777.  
  7778. -sysMenuWasSelected: (ULONG) menuId : sender
  7779.  
  7780. -sysMenuWasSelected:: is the counterpart to  -menuWasSelected::, but this 
  7781. method only gets called, whenever a system menu item was selected. 
  7782.  
  7783.  
  7784. ΓòÉΓòÉΓòÉ 46.3.10. sysCommandPosted:: ΓòÉΓòÉΓòÉ
  7785.  
  7786. -sysCommandPosted: (USHORT) origin : sender
  7787.  
  7788. -sysCommandPosted:: is called by the window's  -handleMessage: withParams: and: 
  7789. whenever a system command was posted, and neither -sysButtonWasPressed:: and 
  7790. -sysMenuWasSelected:: return nil. 
  7791.  
  7792. Its behaviour should be analogous to -commandPosted::. 
  7793.  
  7794.  
  7795. ΓòÉΓòÉΓòÉ 46.3.11. handleMessage: withParams: and:: ΓòÉΓòÉΓòÉ
  7796.  
  7797. -(MRESULT) handleMessage: (ULONG) msg withParams:(MPARAM) mp1 and: mp2 : sender
  7798.  
  7799. Every time an event coult not be handle either by the window itself or by one 
  7800. of the delegate functions, -handleMessage: withParams: and:: gets called. So 
  7801. all types of events can be processed without the need to subclass StdWindow. 
  7802.  
  7803. The return type should always be converted explicitly to type  MRESULT. 
  7804.  
  7805. See also the StdWindow build in method -handleMessage: withParams: and:. 
  7806.  
  7807.  
  7808. ΓòÉΓòÉΓòÉ 47. TitleBar ΓòÉΓòÉΓòÉ
  7809.  
  7810. Inherits from: Window : Object 
  7811.  
  7812. Class description: 
  7813.  
  7814. TitleBar is a class designed to provide an interface to OS/2 PM windows of 
  7815. class WC_TITLEBAR. 
  7816.  
  7817. At the moment no additional functionality to its superclass Window has been 
  7818. added. Special support for OS/2 PM Titlebar windows will be added in the 
  7819. future. 
  7820.  
  7821.  
  7822. ΓòÉΓòÉΓòÉ 48. TriStateButton ΓòÉΓòÉΓòÉ
  7823.  
  7824. Inherits from: Button : FactoryWindow : DelegateWindow : Window : Object 
  7825.  
  7826. Class description: 
  7827.  
  7828. The class TriStateButton is a subclass of Button. Its only purpose is to 
  7829. simplify creating a PM Button window for a special purpose. 
  7830.  
  7831. For a short description of an instance of this class see table *. Figure * 
  7832. shows an instance of this class. See the description of the class Button for 
  7833. access methods. 
  7834.  
  7835.  
  7836. ΓòÉΓòÉΓòÉ 48.1. Methods ΓòÉΓòÉΓòÉ
  7837.  
  7838.  
  7839. ΓòÉΓòÉΓòÉ 48.1.1. initWithId: andFlags: in: ΓòÉΓòÉΓòÉ
  7840.  
  7841. -initWithId: (ULONG) anId andFlags: (ULONG) flags in:(Window *) parent
  7842.  
  7843. This method initializes a newly created instance of  TriStateButton. Using this 
  7844. class and method is similar to creating a Button object while specifying the 
  7845. flag BS_3STATE. 
  7846.  
  7847.  
  7848. ΓòÉΓòÉΓòÉ 49. ValueSet ΓòÉΓòÉΓòÉ
  7849.  
  7850. Inherits from: Window : Object 
  7851.  
  7852. Class description: 
  7853.  
  7854. ValueSet is a class designed to provide an interface to OS/2 PM windows of 
  7855. class WC_VALUESET. 
  7856.  
  7857. At the moment no additional functionality to its superclass Window has been 
  7858. added. Special support for OS/2 PM Valueset windows will be added in the 
  7859. future. 
  7860.  
  7861.  
  7862. ΓòÉΓòÉΓòÉ 50. Window ΓòÉΓòÉΓòÉ
  7863.  
  7864. Inherits from: Object 
  7865.  
  7866. Archiving 
  7867.  
  7868. Class description: 
  7869.  
  7870. Window is an abstract superclass for all classes representing some kind of 
  7871. window (e.g. an Entryfield, a StdWindow or a Dialog). 
  7872.  
  7873. This class should never be instantiated. It doesn't provide enough 
  7874. functionality to be really useful. It can be compared to the Objective C root 
  7875. class Object, it is the root class for all PM windows. 
  7876.  
  7877. Only PM Windows with minimal functionality should be associated directly with 
  7878. instances of this class (e.g. Static Texts, Pushbuttons, ...). 
  7879.  
  7880.  
  7881. ΓòÉΓòÉΓòÉ 50.1. Instance Variables ΓòÉΓòÉΓòÉ
  7882.  
  7883.  
  7884. ΓòÉΓòÉΓòÉ 50.1.1. HWNDwindow ΓòÉΓòÉΓòÉ
  7885.  
  7886. window is an OS/2 PM window handle. It stores the handle of the PM window 
  7887. associated with an instance of this class. 
  7888.  
  7889.  
  7890. ΓòÉΓòÉΓòÉ 50.1.2. Window *child ΓòÉΓòÉΓòÉ
  7891.  
  7892. This variable points to the first child window of this window. 
  7893.  
  7894.  
  7895. ΓòÉΓòÉΓòÉ 50.1.3. Window *sibling ΓòÉΓòÉΓòÉ
  7896.  
  7897. sibling points to the first sibling window of this window. 
  7898.  
  7899.  
  7900. ΓòÉΓòÉΓòÉ 50.1.4. inttag ΓòÉΓòÉΓòÉ
  7901.  
  7902. This special instance variable can be used by the application programmer to 
  7903. store some integer data for your window objects. Instances of Help can make use 
  7904. of this tag value to determine which help page should be displayed. 
  7905.  
  7906.  
  7907. ΓòÉΓòÉΓòÉ 50.2. Methods ΓòÉΓòÉΓòÉ
  7908.  
  7909.  
  7910. ΓòÉΓòÉΓòÉ 50.2.1. init ΓòÉΓòÉΓòÉ
  7911.  
  7912. -init
  7913.  
  7914. This method initializes the instance variables to default values, which means 
  7915. it sets window to NULLHANDLE. init returns self. 
  7916.  
  7917.  
  7918. ΓòÉΓòÉΓòÉ 50.2.2. associate: ΓòÉΓòÉΓòÉ
  7919.  
  7920. -associate: (HWND) hwnd
  7921.  
  7922. This instance method is used to associate an already existing Presentation 
  7923. Manager Window (Pushbutton, ...) with an instance of the class Window. 
  7924.  
  7925. The only parameter hwnd is the window handle of the OS/2 PM window. 
  7926.  
  7927. By using this method the programmer can create an Objective C Object without 
  7928. creating a PM window. After associating a PM window with a window Object, 
  7929. window data can be set and queried and manipulation can be done by using 
  7930. instance methods. 
  7931.  
  7932.  
  7933. ΓòÉΓòÉΓòÉ 50.2.3. free ΓòÉΓòÉΓòÉ
  7934.  
  7935. -free
  7936.  
  7937. -free frees all resources allocated by this object.  -free returns self. 
  7938.  
  7939. free does not destroy an associated window using the OS/2 API function 
  7940. WinDestroyWindow. 
  7941.  
  7942. If child windows or sibling windows exist, they are freed before this window. 
  7943.  
  7944.  
  7945. ΓòÉΓòÉΓòÉ 50.2.4. destroy ΓòÉΓòÉΓòÉ
  7946.  
  7947. -destroy
  7948.  
  7949. -destroy is used to desctroy the Presentation Manager window associated with 
  7950. the Objective C object. 
  7951.  
  7952.  
  7953. ΓòÉΓòÉΓòÉ 50.2.5. tag ΓòÉΓòÉΓòÉ
  7954.  
  7955. -(int) tag
  7956.  
  7957. Using -tag you can get the value stored in the instance variable tag. 
  7958.  
  7959.  
  7960. ΓòÉΓòÉΓòÉ 50.2.6. setTag: ΓòÉΓòÉΓòÉ
  7961.  
  7962. -setTag: (int) aTag
  7963.  
  7964. Use -setTag: to set the value of the instance variable tag to aTag. 
  7965.  
  7966.  
  7967. ΓòÉΓòÉΓòÉ 50.2.7. createObjects ΓòÉΓòÉΓòÉ
  7968.  
  7969. -createObjects
  7970.  
  7971. -createObjects searches if any PM child windows of this window exist, and then 
  7972. creates appropriate Objective C objects for each of them and inserts them in 
  7973. the window hierarchy of this window as child windows. 
  7974.  
  7975. This method is maily used after loading a StdDialog from a resource file to 
  7976. build the complete object hierarchy. 
  7977.  
  7978.  
  7979. ΓòÉΓòÉΓòÉ 50.2.8. insertChild: ΓòÉΓòÉΓòÉ
  7980.  
  7981. -insertChild: aChild
  7982.  
  7983. -insertChild: inserts aChild as a child into the window hierarchy of this 
  7984. window. aChild must be an instance of  Window or one of its subclasses. 
  7985.  
  7986.  
  7987. ΓòÉΓòÉΓòÉ 50.2.9. insertSibling: ΓòÉΓòÉΓòÉ
  7988.  
  7989. -insertSibling: aSibling
  7990.  
  7991. -insertSibling: inserts aSibling as a child into the window hierarchy of this 
  7992. window. aSibling must be an instance of Window or one of its subclasses. 
  7993.  
  7994.  
  7995. ΓòÉΓòÉΓòÉ 50.2.10. deleteChild: ΓòÉΓòÉΓòÉ
  7996.  
  7997. -deleteChild: aChild
  7998.  
  7999. Using this method, -deleteChild:, the window will remove its child window 
  8000. aChild from its list of children. If the window could be removed, aChild is 
  8001. returned, otherwise nil. 
  8002.  
  8003.  
  8004. ΓòÉΓòÉΓòÉ 50.2.11. deleteSibling: ΓòÉΓòÉΓòÉ
  8005.  
  8006. -deleteSibling: aSibling
  8007.  
  8008. To delete a sibling of the window, use -deleteSibling:. This method will return 
  8009. the sibling window aSibling if it could be removed or nil otherwise. 
  8010.  
  8011.  
  8012. ΓòÉΓòÉΓòÉ 50.2.12. findFromID: ΓòÉΓòÉΓòÉ
  8013.  
  8014. -findFromID: (ULONG) anId
  8015.  
  8016. -findFromID: returns a pointer to an Objective C window identified by its OS/2 
  8017. identifier anId, if there's a window identified by anId beyond the children of 
  8018. this window. 
  8019.  
  8020.  
  8021. ΓòÉΓòÉΓòÉ 50.2.13. findFromHWND: ΓòÉΓòÉΓòÉ
  8022.  
  8023. -findFromHWND: (HWND) aHwnd
  8024.  
  8025. -findFromHWND: returns a pointer to an Objective C window identified by its 
  8026. OS/2 window handle aHwnd, if there's a window identified by aHwnd beyond the 
  8027. children of this window. 
  8028.  
  8029.  
  8030. ΓòÉΓòÉΓòÉ 50.2.14. setChild: ΓòÉΓòÉΓòÉ
  8031.  
  8032. -setChild: (Window *) aChild
  8033.  
  8034. To set the Window object's instance variable child to aChild use this instance 
  8035. method. 
  8036.  
  8037.  
  8038. ΓòÉΓòÉΓòÉ 50.2.15. child ΓòÉΓòÉΓòÉ
  8039.  
  8040. -(Window *) child
  8041.  
  8042. -child returns the (first) child window of the Window object. 
  8043.  
  8044.  
  8045. ΓòÉΓòÉΓòÉ 50.2.16. setSibling: ΓòÉΓòÉΓòÉ
  8046.  
  8047. -setSibling: (Window *) aSibling
  8048.  
  8049. To set the Window object's instance variable sibling to aSibling use this 
  8050. instance method. 
  8051.  
  8052.  
  8053. ΓòÉΓòÉΓòÉ 50.2.17. sibling ΓòÉΓòÉΓòÉ
  8054.  
  8055. -(Window *) sibling
  8056.  
  8057. -child returns the (first) sibling window of the Window object. 
  8058.  
  8059.  
  8060. ΓòÉΓòÉΓòÉ 50.2.18. text: ΓòÉΓòÉΓòÉ
  8061.  
  8062. -(char *) text: (char *) buffer
  8063.  
  8064. By using -text: the Window Text of the associated PM window can be queried. If 
  8065. buffer is NULL, enough memory to hold the window text is allocated via malloc 
  8066. and can be freed later by the application program using free. 
  8067.  
  8068. The window text is copied into buffer, which must be large enough to hold all 
  8069. of the text, and buffer, or a pointer to the newly allocated area is returned. 
  8070.  
  8071. The length of the window text can be queried via -textLength. 
  8072.  
  8073.  
  8074. ΓòÉΓòÉΓòÉ 50.2.19. textLength ΓòÉΓòÉΓòÉ
  8075.  
  8076. -(int) textLength
  8077.  
  8078. This method returns the number of characters the window text consists of. Don't 
  8079. forget to allocate an extra byte for the  End-of-String-character before using 
  8080. text:. 
  8081.  
  8082.  
  8083. ΓòÉΓòÉΓòÉ 50.2.20. setText: ΓòÉΓòÉΓòÉ
  8084.  
  8085. -setText: (char *) buffer
  8086.  
  8087. -setText: is used to set the window text to a new string. This string is stored 
  8088. in buffer. 
  8089.  
  8090.  
  8091. ΓòÉΓòÉΓòÉ 50.2.21. setSize:::: ΓòÉΓòÉΓòÉ
  8092.  
  8093. -setSize: (LONG) x : (LONG) y : (LONG) w : (LONG) h
  8094.  
  8095. The instance method -setSize:::: is used for resizing a PM window by the 
  8096. application program. The parameters x and  y represent the lower left corner of 
  8097. the window relative to its parent, w and h the width and the height of the 
  8098. window. 
  8099.  
  8100.  
  8101. ΓòÉΓòÉΓòÉ 50.2.22. setRect:: ΓòÉΓòÉΓòÉ
  8102.  
  8103. -setRect: (LONG) w : (LONG) h
  8104.  
  8105. -setRect: is used to set the size of the window without changing the relative 
  8106. position in its parent window. 
  8107.  
  8108. The new size of the window is specified by (w/h). 
  8109.  
  8110.  
  8111. ΓòÉΓòÉΓòÉ 50.2.23. size: ΓòÉΓòÉΓòÉ
  8112.  
  8113. -size: (PSWP) aSize
  8114.  
  8115. -size: fills the SWP-structure aSize with the appropriate values by querying 
  8116. this window's instance variables. 
  8117.  
  8118.  
  8119. ΓòÉΓòÉΓòÉ 50.2.24. width ΓòÉΓòÉΓòÉ
  8120.  
  8121. -(LONG) width
  8122.  
  8123. -width returns the width of the window in pixels. 
  8124.  
  8125.  
  8126. ΓòÉΓòÉΓòÉ 50.2.25. height ΓòÉΓòÉΓòÉ
  8127.  
  8128. -(LONG) height
  8129.  
  8130. -height returns the height of the window in pixels. 
  8131.  
  8132.  
  8133. ΓòÉΓòÉΓòÉ 50.2.26. xoffset ΓòÉΓòÉΓòÉ
  8134.  
  8135. -(LONG) xoffset
  8136.  
  8137. -xoffset returns the horizontal offset of the lower left corner of the window 
  8138. from the lower left corner of the desktop in pixels. 
  8139.  
  8140.  
  8141. ΓòÉΓòÉΓòÉ 50.2.27. yoffset ΓòÉΓòÉΓòÉ
  8142.  
  8143. -(LONG) yoffset
  8144.  
  8145. -yoffset returns the vertical offset of the lower left corner of the window 
  8146. from the lower left corner of the desktop in pixels. 
  8147.  
  8148.  
  8149. ΓòÉΓòÉΓòÉ 50.2.28. windowStyle ΓòÉΓòÉΓòÉ
  8150.  
  8151. -(ULONG) windowStyle
  8152.  
  8153. The window's appearance depends on the window class which was used at creation 
  8154. and the window style which can be queried using this method. From this style, 
  8155. your application can e.g. determine the visibility state of the object or if 
  8156. any other style flags have been set during creation or later using 
  8157. -setWindowStyle:. 
  8158.  
  8159.  
  8160. ΓòÉΓòÉΓòÉ 50.2.29. setWindowStyle: ΓòÉΓòÉΓòÉ
  8161.  
  8162. -setWindowStyle: (ULONG) styleFlags
  8163.  
  8164. If you wish to change the window's appearance at run-time, i.e., after creating 
  8165. and initializing the window object, you have to use -setWindowStyle:. To 
  8166. perform an update of the window as displayed on screen, you should call 
  8167. -invalidate afterwards. 
  8168.  
  8169.  
  8170. ΓòÉΓòÉΓòÉ 50.2.30. window ΓòÉΓòÉΓòÉ
  8171.  
  8172. -(HWND) window
  8173.  
  8174. This method returns the handle of the Presentation Manager window associated 
  8175. with this window object. If no PM window is associated with this object, 
  8176. NULLHANDLE is returned. 
  8177.  
  8178.  
  8179. ΓòÉΓòÉΓòÉ 50.2.31. pmId ΓòÉΓòÉΓòÉ
  8180.  
  8181. -(ULONG) pmId
  8182.  
  8183. -pmId returns the OS/2 PM identification key of the window. 
  8184.  
  8185.  
  8186. ΓòÉΓòÉΓòÉ 50.2.32. enable ΓòÉΓòÉΓòÉ
  8187.  
  8188. -enable
  8189.  
  8190. -enable (re-) enables this window. Message processing for this window continues 
  8191. after receiving this message, if the window was previously in disabled state. 
  8192.  
  8193.  
  8194. ΓòÉΓòÉΓòÉ 50.2.33. disable ΓòÉΓòÉΓòÉ
  8195.  
  8196. -disable
  8197. -disable disables this window. No message processing is done by this window 
  8198. before re-enabling the window by using  -enable. 
  8199.  
  8200.  
  8201. ΓòÉΓòÉΓòÉ 50.2.34. activate ΓòÉΓòÉΓòÉ
  8202.  
  8203. -activate
  8204.  
  8205. -activate activates the window. 
  8206.  
  8207.  
  8208. ΓòÉΓòÉΓòÉ 50.2.35. deactivate ΓòÉΓòÉΓòÉ
  8209.  
  8210. -deactivate
  8211.  
  8212. -deactivate deactivates the window. 
  8213.  
  8214.  
  8215. ΓòÉΓòÉΓòÉ 50.2.36. invalidate ΓòÉΓòÉΓòÉ
  8216.  
  8217. -invalidate
  8218.  
  8219. Calling -invalidate causes the display area occupied by the window to be 
  8220. invalidated. As a consequence of this, the window is redrawn. 
  8221.  
  8222.  
  8223. ΓòÉΓòÉΓòÉ 50.2.37. show ΓòÉΓòÉΓòÉ
  8224.  
  8225. -show
  8226.  
  8227. If the window was previously hidden (either by using the -hide method or by not 
  8228. specifying WS_VISIBLE at creation time, the window object is shown. 
  8229.  
  8230. If the window is already visible, this method has no effect. 
  8231.  
  8232.  
  8233. ΓòÉΓòÉΓòÉ 50.2.38. hide ΓòÉΓòÉΓòÉ
  8234.  
  8235. -hide
  8236.  
  8237. -hide hides the window object. It can be made visible again using -show. 
  8238.  
  8239.  
  8240. ΓòÉΓòÉΓòÉ 50.2.39. handleMessage: withParams: and: ΓòÉΓòÉΓòÉ
  8241.  
  8242. -(MRESULT) handleMessage: (ULONG) msg withParams: (MPARAM)mp1 and: (MPARAM) mp2
  8243.  
  8244. -handleMessage: withParams: and: gets called by the  default Window procedure 
  8245. for the OS/2 PM-class  WINDOW_CLASS if a message was sent to this window. This 
  8246. function only reacts to WM_ERASEBACKGROUND. If this message is received, YES is 
  8247. returned, otherwise the result of the default window procedure 
  8248. (WinDefWindowProc). 
  8249.  
  8250. The result should always be converted explicitly to the PM type  MRESULT. 
  8251.  
  8252.  
  8253. ΓòÉΓòÉΓòÉ 51. Presentation Manager Library---Protocols ΓòÉΓòÉΓòÉ
  8254.  
  8255. This chapter describes all protocols available in the Presentation Manager 
  8256. library. These descriptions consist of two parts, 
  8257.  
  8258.    1. The name of the protocol and a list of all classes which adopt it 
  8259.    2. A list of all methods declared and a short description of these 
  8260.  
  8261.  
  8262. ΓòÉΓòÉΓòÉ 52. Archiving ΓòÉΓòÉΓòÉ
  8263.  
  8264. Adopted by ActionWindow, Button, Container, Help, InterfaceFile, ListBox, Menu, 
  8265. MultiLineEntryField, NoteBook, PresentationSpace, Printer, ScrollBar, Slider, 
  8266. SpinButton, Static, StdDialog, StdWindow, Window 
  8267.  
  8268. Protocol description: 
  8269.  
  8270. The Objective C run-time library provides functions for storing objects to a 
  8271. file and reloading these objects later. This kind of archiving is utilized by 
  8272. one of the programs shipped together with the library package. 
  8273.  
  8274. The  application will allow you to create objects (dialog windows, window 
  8275. controls, etc.) and save them in a so-called interface file. The interface file 
  8276. itself just stores the objects you created in a typed stream as supported by 
  8277. the run-time library. 
  8278.  
  8279. In an object-oriented environment the objects itself are responsible for 
  8280. writing themselves to a stream or reading them in. 
  8281.  
  8282. There are three instance method an object should implement if archiving shall 
  8283. be supported. Most of the classes of the Presentation Manager library do 
  8284. already support archiving, the rest of the classes will support this feature 
  8285. soon. 
  8286.  
  8287.  
  8288. ΓòÉΓòÉΓòÉ 52.1. Methods ΓòÉΓòÉΓòÉ
  8289.  
  8290.  
  8291. ΓòÉΓòÉΓòÉ 52.1.1. awake ΓòÉΓòÉΓòÉ
  8292.  
  8293. -awake
  8294.  
  8295. After an object has been read from a typed stream using its -read: method, this 
  8296. method is automatically called. Here you should put custom initialization for 
  8297. your object. -init is not called automatically by -read: and should not be 
  8298. called from your source code. 
  8299.  
  8300. The object is guaranteed be initialized after the -awake method has been 
  8301. called. Before this methods gets called, you should not use the object. 
  8302.  
  8303.  
  8304. ΓòÉΓòÉΓòÉ 52.1.2. read: ΓòÉΓòÉΓòÉ
  8305.  
  8306. -read: (TypedStream *) aStream
  8307.  
  8308. -read: is used to read in an object from a typed stream. The stream is 
  8309. represented by aStream. Before unarchiving any of the instance variables you 
  8310. should call the inherited -read: method of your classes' superclass. 
  8311.  
  8312. To read data, use the functions 
  8313.  
  8314.      objc_read_type(), 
  8315.      objc_read_types(), 
  8316.      objc_read_array() and 
  8317.      objc_read_object() 
  8318.  
  8319.  as provided by the Objective C run-time library. 
  8320.  
  8321.  
  8322. ΓòÉΓòÉΓòÉ 52.1.3. write: ΓòÉΓòÉΓòÉ
  8323.  
  8324. -write: (TypedStream *) aStream
  8325.  
  8326. Use -write: to write an object to the typed stream aStream. You should only 
  8327. archive the instance variables you cannot initialize from scratch. E.g. you 
  8328. should not even think of storing temporary buffers and the like. 
  8329.  
  8330. For writing your instance variables the Objective C run-time library provides 
  8331. the functions 
  8332.  
  8333.      objc_write_type(), 
  8334.      objc_write_types(), 
  8335.      objc_write_object_reference(), 
  8336.      objc_write_root_object(), 
  8337.      objc_write_array() and 
  8338.      objc_write_object(). 
  8339.  
  8340.  
  8341. ΓòÉΓòÉΓòÉ 53. Selection ΓòÉΓòÉΓòÉ
  8342.  
  8343. Adopted by EntryField, MultiLineEntryField 
  8344.  
  8345. Protocol description: 
  8346.  
  8347. This protocol is used to declare all OS/2 Clipboard functions which can be used 
  8348. by the implemented Window classes. 
  8349.  
  8350.  
  8351. ΓòÉΓòÉΓòÉ 53.1. Methods ΓòÉΓòÉΓòÉ
  8352.  
  8353.  
  8354. ΓòÉΓòÉΓòÉ 53.1.1. clearSelection ΓòÉΓòÉΓòÉ
  8355.  
  8356. -clearSelection
  8357.  
  8358. -clearSelection clears the current Selection of items in the object which 
  8359. adopts this protocol. 
  8360.  
  8361.  
  8362. ΓòÉΓòÉΓòÉ 53.1.2. copySelection ΓòÉΓòÉΓòÉ
  8363.  
  8364. -copySelection
  8365.  
  8366. Using -copySelection the selected items are copied into the system clipboard. 
  8367. The items themselves remain unchanged. 
  8368.  
  8369.  
  8370. ΓòÉΓòÉΓòÉ 53.1.3. cutSelection ΓòÉΓòÉΓòÉ
  8371.  
  8372. -cutSelection
  8373.  
  8374. -cutSelection works alike a combination of -copySelection and -clearSelection. 
  8375. The selected items are copied into the system clipboard and they are deleted 
  8376. from the source window. 
  8377.  
  8378.  
  8379. ΓòÉΓòÉΓòÉ 53.1.4. pasteSelection ΓòÉΓòÉΓòÉ
  8380.  
  8381. -pasteSelection
  8382.  
  8383. When calling -pasteSelection all selected Items in the system clipboard are 
  8384. pasted into the object implementing this method. 
  8385.  
  8386.  
  8387. ΓòÉΓòÉΓòÉ 54. Value ΓòÉΓòÉΓòÉ
  8388.  
  8389. Adopted by EntryField 
  8390.  
  8391.  
  8392. ΓòÉΓòÉΓòÉ 54.1. Methods ΓòÉΓòÉΓòÉ
  8393.  
  8394. Protocol description: 
  8395.  
  8396. The protocol Value was declared to define a common interface to classes storing 
  8397. some data which can be accessed in various ways. At the moment, only the 
  8398. EntryField class does adopt this protocol. In addition to this, many of the 
  8399. instance methods defined here are provided by some other classes mainly 
  8400. concerned with handling of data, e.g. String from the utility library or the 
  8401. descendants of DBField from the database library. 
  8402.  
  8403. The main purpose of adopting this protocol is to simplify access to an objects 
  8404. instance data. Some times the programmer will need access to the data in form 
  8405. of a string, some times a numeric representation is of greater value. 
  8406.  
  8407.  
  8408. ΓòÉΓòÉΓòÉ 54.2. Methods ΓòÉΓòÉΓòÉ
  8409.  
  8410.  
  8411. ΓòÉΓòÉΓòÉ 54.2.1. stringValue ΓòÉΓòÉΓòÉ
  8412.  
  8413. -(char *) stringValue
  8414.  
  8415. This method returns a pointer to a NULL-terminated string. You are not allowed 
  8416. to modify the data as pointed to by the return value of this method. 
  8417. Modifications are only allowed via the setXXXX: methods. 
  8418.  
  8419. The string is only valid as long as the instance data is not modified by any of 
  8420. the setXXXX: methods. 
  8421.  
  8422.  
  8423. ΓòÉΓòÉΓòÉ 54.2.2. intValue ΓòÉΓòÉΓòÉ
  8424.  
  8425. -(int) intValue
  8426.  
  8427. -intValue returns the instance data as an integer value. 
  8428.  
  8429. If the exact numeric representation is a floating point number, the value 
  8430. returned by this method will be rounded. 
  8431.  
  8432.  
  8433. ΓòÉΓòÉΓòÉ 54.2.3. longValue ΓòÉΓòÉΓòÉ
  8434.  
  8435. -(long) longValue
  8436.  
  8437. Just as -intValue, this method is used to query the instance data in a numeric 
  8438. representation. The return type of this method is long. 
  8439.  
  8440. If the exact numeric representation is a floating point number, the value 
  8441. returned by this method will be rounded. 
  8442.  
  8443.  
  8444. ΓòÉΓòÉΓòÉ 54.2.4. floatValue ΓòÉΓòÉΓòÉ
  8445.  
  8446. -(float) floatValue
  8447.  
  8448. For instance data represented as a floating point value, this method should be 
  8449. used for read-access. -floatValue will return a floating point number 
  8450. representing the instance data of the object. 
  8451.  
  8452.  
  8453. ΓòÉΓòÉΓòÉ 54.2.5. setStringValue: ΓòÉΓòÉΓòÉ
  8454.  
  8455. -setStringValue: (char *) aValue
  8456.  
  8457. -setStringValue: is one of the methods used to modify the objects's instance 
  8458. data. In this case a pointer to a NULL-terminated string is passed which is 
  8459. then converted to the internal representation suitable for the object itself. 
  8460. aValue does not have to be a constant string. The object is responsible for 
  8461. copying the string data into an internal buffer area and not only to store the 
  8462. pointer aValue. 
  8463.  
  8464.  
  8465. ΓòÉΓòÉΓòÉ 54.2.6. setIntValue: ΓòÉΓòÉΓòÉ
  8466.  
  8467. -setIntValue: (int) aValue
  8468.  
  8469. To set the object's instance data as an integer value, use -setIntValue:. 
  8470. aValue is an integer number representing the instance data to be. 
  8471.  
  8472.  
  8473. ΓòÉΓòÉΓòÉ 54.2.7. setLongValue: ΓòÉΓòÉΓòÉ
  8474.  
  8475. -setLongValue: (long) aValue
  8476.  
  8477. To set the object's instance data as a long integer value, use -setLongValue:. 
  8478. aValue is an integer number representing the instance data to be. 
  8479.  
  8480.  
  8481. ΓòÉΓòÉΓòÉ 54.2.8. setFloatValue: ΓòÉΓòÉΓòÉ
  8482.  
  8483. -setFloatValue: (long) aValue
  8484.  
  8485. As opposed to -setStringValue: for setting the object's instance data as a 
  8486. string value on the one hand and to -setIntValue: and -setLongValue: using an 
  8487. integer representation this method is the write-counterpart to -floatValue. It 
  8488. is used to set the object's instance data to the floating point number aValue. 
  8489.  
  8490.  
  8491. ΓòÉΓòÉΓòÉ 55. Database Programming Classes ΓòÉΓòÉΓòÉ
  8492.  
  8493.  
  8494. ΓòÉΓòÉΓòÉ 56. Database Library---Overview ΓòÉΓòÉΓòÉ
  8495.  
  8496. This part of the reference manual describes the classes provided by the 
  8497. database library. Figure * shows all classes implemented by this library. 
  8498.  
  8499.  
  8500.  
  8501. Inheritance hierarchy in Database Class library
  8502.  
  8503. Before using any of the classes in one of your source code files, include 
  8504. <db/db.h>. The object files must be linked with objcdb.a. This can be 
  8505. accomplished by specifying the linker option -lobjcdb in addition to -lobjc. 
  8506.  
  8507. An introduction into using this classes can be found in the tutorial. 
  8508.  
  8509. Methods and classes not listed here should not be used by the application 
  8510. programmer. 
  8511.  
  8512.  
  8513. ΓòÉΓòÉΓòÉ 56.1. Class "DBBoolField" ΓòÉΓòÉΓòÉ
  8514.  
  8515. @interface DBBoolField : DBField
  8516. {
  8517. }
  8518.  
  8519. -(BOOL) booleanValue;
  8520. -setBooleanValue: (BOOL) aValue;
  8521.  
  8522. @end
  8523.  
  8524.  
  8525. ΓòÉΓòÉΓòÉ 56.2. Class "DBCharField" ΓòÉΓòÉΓòÉ
  8526.  
  8527. @interface DBCharField : DBField
  8528. {
  8529. }
  8530.  
  8531. @end
  8532.  
  8533.  
  8534. ΓòÉΓòÉΓòÉ 56.3. Class "DBDateField" ΓòÉΓòÉΓòÉ
  8535.  
  8536. @interface DBDateField : DBField
  8537. {
  8538. }
  8539.  
  8540. -(int) day;
  8541. -(int) month;
  8542. -(int) year;
  8543.  
  8544. -setDay: (int) aDay;
  8545. -setMonth: (int) aMonth;
  8546. -setYear: (int) aYear;
  8547.  
  8548. @end
  8549.  
  8550.  
  8551. ΓòÉΓòÉΓòÉ 56.4. Class "DBField" ΓòÉΓòÉΓòÉ
  8552.  
  8553. @interface DBField : Object <DBProperties>
  8554. {
  8555. id <DBEntities> entity;
  8556. const char *propertyName;
  8557.  
  8558. char length,
  8559. decimals,
  8560. *stringValue;
  8561. }
  8562.  
  8563. -initWithName: (const char *) aName andLength: (char) aLength
  8564. andDecimals: (char) someDecimals;
  8565. -free;
  8566.  
  8567. -setStringValue: (char *) aString;
  8568. -(char *) stringValue;
  8569. -(char) length;
  8570.  
  8571. -(int) compareWith: (char *) aString;
  8572.  
  8573. @end
  8574.  
  8575.  
  8576. ΓòÉΓòÉΓòÉ 56.5. Class "DBFile" ΓòÉΓòÉΓòÉ
  8577.  
  8578. @interface DBFile : Object <DBEntities>
  8579. {
  8580. DBHEADER *dbHeader;
  8581. SimpleList *fieldList;
  8582.  
  8583. FILE *fileHandle;
  8584. void *buffer;
  8585. long currentRecord;
  8586.  
  8587. char *fileName;
  8588. id searchArguments;
  8589. }
  8590.  
  8591. -init: (char *) fileName;
  8592. -create: (char *) fileName withFields: (int) count list: (DBFIELD *) fields;
  8593. -free;
  8594.  
  8595. -field: (int) fieldNumber;
  8596. -(int) fieldCount;
  8597.  
  8598. -readRecord: (long) offset;
  8599. -writeRecord: (long) offset;
  8600. -(long) currentRecord;
  8601. -(BOOL) deleted;
  8602.  
  8603. -append;
  8604. -replace;
  8605. -delete;
  8606. -undelete;
  8607. -clear;
  8608.  
  8609. -(BOOL) findFirst;
  8610. -(BOOL) findNext;
  8611.  
  8612. -(long) recordCount;
  8613.  
  8614. -setSearchArguments: args;
  8615. -searchArguments;
  8616.  
  8617. @end
  8618.  
  8619.  
  8620. ΓòÉΓòÉΓòÉ 56.6. Class "DBList" ΓòÉΓòÉΓòÉ
  8621.  
  8622. @interface DBList : SimpleList
  8623. {
  8624. DBFile *entity;
  8625. }
  8626.  
  8627. -init;
  8628. -initForEntity: (DBFile *) anEntity;
  8629.  
  8630. -fetchAllRecords: sender;
  8631. -fetchUsingQualifier: aQualifier;
  8632. -saveChanges: sender;
  8633.  
  8634. -setEntity: (DBFile *) anEntity;
  8635. -(DBFile *) entity;
  8636.  
  8637. @end
  8638.  
  8639.  
  8640. ΓòÉΓòÉΓòÉ 56.7. Class "DBMemoField" ΓòÉΓòÉΓòÉ
  8641.  
  8642. @interface DBMemoField : DBField
  8643. {
  8644. }
  8645.  
  8646. @end
  8647.  
  8648.  
  8649. ΓòÉΓòÉΓòÉ 56.8. Class "DBNumField" ΓòÉΓòÉΓòÉ
  8650.  
  8651. @interface DBNumField : DBField
  8652. {
  8653. }
  8654.  
  8655. -(int) intValue;
  8656. -(float) floatValue;
  8657. -(double) doubleValue;
  8658.  
  8659. -setIntValue: (int) aValue;
  8660. -setFloatValue: (float) aValue;
  8661. -setDoubleValue: (double) aValue;
  8662.  
  8663. @end
  8664.  
  8665.  
  8666. ΓòÉΓòÉΓòÉ 56.9. Class "DBRecord" ΓòÉΓòÉΓòÉ
  8667.  
  8668. @interface DBRecord : Object
  8669. {
  8670. DBFile *entity;
  8671. long recNo;
  8672. id fieldList;
  8673. BOOL changed;
  8674. }
  8675.  
  8676. -initForEntity: (DBFile *) anEntity;
  8677. -free;
  8678.  
  8679. -replace;
  8680.  
  8681. -saveChanges: sender;
  8682.  
  8683. -setChanged: (BOOL) value;
  8684. -(BOOL) changed;
  8685.  
  8686. -field: (int) fieldNumber;
  8687. -(int) fieldCount;
  8688.  
  8689. -(long) recNo;
  8690. -copyToDB;
  8691. -copyFromDB;
  8692.  
  8693. -setFieldData: (unsigned long) field withString: (char *) aString;
  8694. -(char *) fieldData: (unsigned long) field;
  8695.  
  8696. @end
  8697.  
  8698.  
  8699. ΓòÉΓòÉΓòÉ 56.10. Class "DBSearchArg" ΓòÉΓòÉΓòÉ
  8700.  
  8701. @interface DBSearchArg : Object
  8702. {
  8703. }
  8704.  
  8705. -initForField: aField operator: (char) anOperator
  8706. withOperand: (char *) anOperand;
  8707. -free;
  8708.  
  8709. -add: anArg;
  8710. -next;
  8711.  
  8712. -field;
  8713. -(char) operator;
  8714. -(char *) operand;
  8715.  
  8716. -(BOOL) matchesCurrentRecordInFile: aFile;
  8717.  
  8718. @end
  8719.  
  8720.  
  8721. ΓòÉΓòÉΓòÉ 57. Database Library---Classes ΓòÉΓòÉΓòÉ
  8722.  
  8723. This chapter describes all variables and methods of the classes implemented in 
  8724. this library. 
  8725.  
  8726. The description consists of three to six parts: 
  8727.  
  8728.    1. The name of the class and the precessing inheritance hierarchy 
  8729.    2. A list of protocols the class adopts. The methods defined in the formal 
  8730.       protocols are not described here. See the protocols' descriptions for 
  8731.       more information. 
  8732.    3. A short description of the class and its proposed usage 
  8733.    4. A list of all instance variables and their use 
  8734.    5. All newly implemented class and instance methods and their description 
  8735.    6. Methods of a delegate object---if such methods are supported---which get 
  8736.       called at certain times 
  8737.  
  8738.  The list of instance variables is omitted if there are none of them defined 
  8739.  but those inherited from the superclass. 
  8740.  
  8741.  If no return type of some method is specified, the return type defaults to id, 
  8742.  a generic pointer to an Objective C object. 
  8743.  
  8744.  Methods returning an id value normally return self, which is a pointer to the 
  8745.  object itself on successful completion, nil otherwise. 
  8746.  
  8747.  All methods having just one parameter called sender can be used as targets for 
  8748.  command/action bindings. If not stated otherwise, sender is ignored. Normally, 
  8749.  this parameter should be a pointer to the sending object which can be obtained 
  8750.  by self. 
  8751.  
  8752.  
  8753. ΓòÉΓòÉΓòÉ 58. DBBoolField ΓòÉΓòÉΓòÉ
  8754.  
  8755. Inherits from: DBField : Object 
  8756.  
  8757. Class description: 
  8758.  
  8759. DBBoolField is a a special class for handling of fields storing boolean values. 
  8760.  
  8761. For access to the value stored in a data base field of type logic, use you 
  8762. should use the methods -booleanValue and -setBooleanValue: in addition to the 
  8763. inherited access methods. 
  8764.  
  8765.  
  8766. ΓòÉΓòÉΓòÉ 58.1. Methods ΓòÉΓòÉΓòÉ
  8767.  
  8768.  
  8769. ΓòÉΓòÉΓòÉ 58.1.1. booleanValue ΓòÉΓòÉΓòÉ
  8770.  
  8771. -(BOOL) booleanValue
  8772.  
  8773. If the string value stored in the database field equals "t" or "T" then this 
  8774. method will return YES. Otherwise NO is returned. 
  8775.  
  8776.  
  8777. ΓòÉΓòÉΓòÉ 58.1.2. setBooleanValue: ΓòÉΓòÉΓòÉ
  8778.  
  8779. -setBooleanValue: (BOOL) aValue
  8780.  
  8781. Depending on aValue, the string value of the database field is set to "T" in 
  8782. case aValue is YES or to "F" otherwise (aValue equals NO). 
  8783.  
  8784.  
  8785. ΓòÉΓòÉΓòÉ 59. DBCharField ΓòÉΓòÉΓòÉ
  8786.  
  8787. Inherits from: DBField : Object 
  8788.  
  8789. Class description: 
  8790.  
  8791. DBCharField is a a special class for handling of fields storing string values. 
  8792.  
  8793. At the moment, no additional functionality to its superclass DBField is 
  8794. provided. 
  8795.  
  8796. Use -stringValue and .setStringValue: for access to the data stored in the 
  8797. database field. 
  8798.  
  8799.  
  8800. ΓòÉΓòÉΓòÉ 60. DBDateField ΓòÉΓòÉΓòÉ
  8801.  
  8802. Inherits from: DBField : Object 
  8803.  
  8804. Class description:  DBDateField is a a special class for handling of fields 
  8805.                     storing dates. 
  8806.  
  8807. Instance methods for reading the different "parts" of a date, the year, the 
  8808. month and the day are provided as well as methods for setting this data. 
  8809.  
  8810.  
  8811. ΓòÉΓòÉΓòÉ 60.1. Methods ΓòÉΓòÉΓòÉ
  8812.  
  8813.  
  8814. ΓòÉΓòÉΓòÉ 60.1.1. day ΓòÉΓòÉΓòÉ
  8815.  
  8816. -(int) day
  8817.  
  8818. -day will return the day of the date as stored in the database field. No checks 
  8819. on validity of the date are performed. Simply, the first two characters of the 
  8820. string value are interpreted as being the string interpretation of the day. 
  8821.  
  8822.  
  8823. ΓòÉΓòÉΓòÉ 60.1.2. month ΓòÉΓòÉΓòÉ
  8824.  
  8825. -(int) month
  8826.  
  8827. -month will return the month of the date as stored in the database field. No 
  8828. checks on validity of the date are performed. Simply, the third and the forth 
  8829. character of the string value are interpreted as being the string 
  8830. interpretation of the month. 
  8831.  
  8832.  
  8833. ΓòÉΓòÉΓòÉ 60.1.3. year ΓòÉΓòÉΓòÉ
  8834.  
  8835. -(int) year
  8836.  
  8837. -year will return the year of the date as stored in the database field. No 
  8838. checks on validity of the date are performed. Simply, the last four characters 
  8839. of the string value are interpreted as being the string interpretation of the 
  8840. year. 
  8841.  
  8842.  
  8843. ΓòÉΓòÉΓòÉ 60.1.4. setDay: ΓòÉΓòÉΓòÉ
  8844.  
  8845. -setDay: (int) aDay
  8846.  
  8847. This method is used to set the day of the date in the database field to aDay. 
  8848. The day should be in the range of [ 1, 31 ] but is not checked for validity. 
  8849.  
  8850.  
  8851. ΓòÉΓòÉΓòÉ 60.1.5. setMonth: ΓòÉΓòÉΓòÉ
  8852.  
  8853. -setMonth: (int) aMonth
  8854.  
  8855. This method is used to set the month of the date in the database field to 
  8856. aMonth. The month should be in the range of [ 1, 12 ] but is not checked for 
  8857. validity. 
  8858.  
  8859.  
  8860. ΓòÉΓòÉΓòÉ 60.1.6. setYear: ΓòÉΓòÉΓòÉ
  8861.  
  8862. -setYear: (int) aYear
  8863.  
  8864. This method is used to set the year of the date in the database field to aYear. 
  8865. The year is not checked for validity. 
  8866.  
  8867. You must not use negative values for aYear or values greater than 9999. This 
  8868. will lead to unpredictable behaviour. 
  8869.  
  8870.  
  8871. ΓòÉΓòÉΓòÉ 61. DBField ΓòÉΓòÉΓòÉ
  8872.  
  8873. Inherits from: Object 
  8874.  
  8875. DBProperties 
  8876.  
  8877. Class description: 
  8878.  
  8879. DBField provides an interface to any database field stored in a DBase III 
  8880. compatible database. Providing methods for simple access, the program is 
  8881. enabled to query the information stored in a record and modify it. 
  8882.  
  8883. Access to the global data is provided using the methods of the DBProperties 
  8884. protocol. 
  8885.  
  8886.  
  8887. ΓòÉΓòÉΓòÉ 61.1. Instance Variables ΓòÉΓòÉΓòÉ
  8888.  
  8889.  
  8890. ΓòÉΓòÉΓòÉ 61.1.1. id <DBEntities>entity ΓòÉΓòÉΓòÉ
  8891.  
  8892. entity holds a pointer to an object representing the entity (the database file 
  8893. or table) this field belongs to. 
  8894.  
  8895.  
  8896. ΓòÉΓòÉΓòÉ 61.1.2. const char *propertyName ΓòÉΓòÉΓòÉ
  8897.  
  8898. The instance variable propertyName holds a pointer to a NULL-terminated string 
  8899. containing the name of the field. 
  8900.  
  8901.  
  8902. ΓòÉΓòÉΓòÉ 61.1.3. charlength ΓòÉΓòÉΓòÉ
  8903.  
  8904. length is used to store the complete length of the field data in bytes. 
  8905.  
  8906.  
  8907. ΓòÉΓòÉΓòÉ 61.1.4. chardecimals ΓòÉΓòÉΓòÉ
  8908.  
  8909. If the field is used to store numeric values, decimals can be used to specify 
  8910. the number of decimals stored. 
  8911.  
  8912.  
  8913. ΓòÉΓòÉΓòÉ 61.1.5. char *stringValue ΓòÉΓòÉΓòÉ
  8914.  
  8915. This variable points to a NULL-terminated string holding the data as needed by 
  8916. the library functions to modify strings (strlen(), strcat(),...) 
  8917.  
  8918. Reading and writing this variable should only be done using the -stringValue 
  8919. and -setStringValue: methods. This guarantees that the internal record buffer 
  8920. is always kept up to date. 
  8921.  
  8922.  
  8923. ΓòÉΓòÉΓòÉ 61.2. Methods ΓòÉΓòÉΓòÉ
  8924.  
  8925.  
  8926. ΓòÉΓòÉΓòÉ 61.2.1. initWithName: andLength: ΓòÉΓòÉΓòÉ
  8927.  
  8928. andDecimals: 
  8929.  
  8930. -initWithName: (const char *) aName andLength: (char)aLength andDecimals: (char) someDecimals
  8931.  
  8932. -initWithName: andLength: andDecimals is used to initialize a DBField object. 
  8933. The first parameter, aName, should be a NULL-terminated string and represents 
  8934. the name of the database field. 
  8935.  
  8936. aLength specifies the total length of the data stored in the field in bytes. 
  8937. someDecimals represents the number of decimals stored. 
  8938.  
  8939. If someDecimals is greater than 0, the total length of the numeric value stored 
  8940. is aLength - 1 - someDecimals digits before the comma, and someDecimals 
  8941. decimals. 
  8942.  
  8943.  
  8944. ΓòÉΓòÉΓòÉ 61.2.2. free ΓòÉΓòÉΓòÉ
  8945.  
  8946. -free
  8947.  
  8948. Free the storage allocated for this object. 
  8949.  
  8950.  
  8951. ΓòÉΓòÉΓòÉ 61.2.3. setStringValue: ΓòÉΓòÉΓòÉ
  8952.  
  8953. -setStringValue: (char *) aString
  8954.  
  8955. This method is used to modify the data in the internal record buffer. 
  8956.  
  8957. aString is a NULL-terminated string representing the data to be stored. The 
  8958. data is copied into the record buffer. 
  8959.  
  8960.  
  8961. ΓòÉΓòÉΓòÉ 61.2.4. stringValue ΓòÉΓòÉΓòÉ
  8962.  
  8963. -(char *) stringValue
  8964.  
  8965. -stringValue returns the data currently stored in the internal record buffer 
  8966. for this field as a NULL-terminated string. 
  8967.  
  8968.  
  8969. ΓòÉΓòÉΓòÉ 61.2.5. length ΓòÉΓòÉΓòÉ
  8970.  
  8971. -(char) length
  8972.  
  8973. -length returns the total length of the database field in bytes. Simply, the 
  8974. value stored in the instance variable length is returned. 
  8975.  
  8976.  
  8977. ΓòÉΓòÉΓòÉ 61.2.6. compareWith: ΓòÉΓòÉΓòÉ
  8978.  
  8979. -(int) compareWith: (char *) aString
  8980.  
  8981. This method was provided to compare the string stored in the database field 
  8982. with aString. The method returns an integer less than 0 if the stored string is 
  8983. lexically less than aString, 0 if the string equals aString and an integer 
  8984. greater 0 otherwise. 
  8985.  
  8986.  
  8987. ΓòÉΓòÉΓòÉ 62. DBFile ΓòÉΓòÉΓòÉ
  8988.  
  8989. Inherits from: Object 
  8990.  
  8991. DBEntities 
  8992.  
  8993. Class description: 
  8994.  
  8995. The class DBFile is designed to provide access to DBase III databases. It 
  8996. provides methods to read, modify and write single records in such database 
  8997. files. 
  8998.  
  8999. At the moment, records are not really deleted from the database if you call the 
  9000. appropriate -delete method. They are only marked as deleted. Future versions of 
  9001. this library will add a -pack method, where the space allocated for those 
  9002. records is reused again. 
  9003.  
  9004. So at this time, deletion of a record can easily be redone by using -undelete. 
  9005.  
  9006. No synchronization or locking is done by this class. So you have to take care 
  9007. not to open a single database file by two different DBFile objects, neither in 
  9008. the same process, nor in another one. 
  9009.  
  9010. Using the methods provided by the protocol DBEntities is preferred over using 
  9011. e.g. -field:. 
  9012.  
  9013.  
  9014. ΓòÉΓòÉΓòÉ 62.1. Instance Variables ΓòÉΓòÉΓòÉ
  9015.  
  9016.  
  9017. ΓòÉΓòÉΓòÉ 62.1.1. DBHEADER *dbHeader ΓòÉΓòÉΓòÉ
  9018.  
  9019. Every DBase III database file consists of a header and a body part. 
  9020.  
  9021. The header stores information as the last date of update to this file, a record 
  9022. count and the length of a single record. 
  9023.  
  9024. The body of the file is used to store the records themselves. 
  9025.  
  9026. The instance variable dbHeader is used to store the header information for the 
  9027. database file. This information is modified whenever records are appended or 
  9028. modified. 
  9029.  
  9030. You should never modify the header information by yourself. 
  9031.  
  9032.  
  9033. ΓòÉΓòÉΓòÉ 62.1.2. SimpleList *fieldList ΓòÉΓòÉΓòÉ
  9034.  
  9035. fieldList is a pointer to an instance of the SimpleList class provided by the 
  9036. utility library. In this list an instance of DBField or one of its subclasses 
  9037. is stored for every database field. 
  9038.  
  9039.  
  9040. ΓòÉΓòÉΓòÉ 62.1.3. FILE *fileHandle ΓòÉΓòÉΓòÉ
  9041.  
  9042. The variable fileHandle is used internally to read data from and write data to 
  9043. the database file. There is also no need to use it directly. 
  9044.  
  9045.  
  9046. ΓòÉΓòÉΓòÉ 62.1.4. void *buffer ΓòÉΓòÉΓòÉ
  9047.  
  9048. When retrieving a record or storing it back into the database, an internal 
  9049. record buffer is used which is big enough to hold exactly one database record. 
  9050. buffer points to this area in memory. 
  9051.  
  9052.  
  9053. ΓòÉΓòÉΓòÉ 62.1.5. longcurrentRecord ΓòÉΓòÉΓòÉ
  9054.  
  9055. As the internal record buffer can hold exactly one record at a given time, the 
  9056. DBFile object mus know, which record was read (to write it back into the 
  9057. database again). currentRecord stores the number of the last record which was 
  9058. retrieved into the record buffer. 
  9059.  
  9060.  
  9061. ΓòÉΓòÉΓòÉ 62.1.6. char *fileName ΓòÉΓòÉΓòÉ
  9062.  
  9063. The name of the database file is stored in this instance variable. More 
  9064. exactly, a pointer to a NULL-terminated string is stored where the filename 
  9065. resides. 
  9066.  
  9067.  
  9068. ΓòÉΓòÉΓòÉ 62.1.7. idsearchArguments ΓòÉΓòÉΓòÉ
  9069.  
  9070. This variable stores a pointer to the first search argument which will be used 
  9071. when searching the database file using the methods -findFirst and -findNext. 
  9072.  
  9073. If no search arguments should be used, i.e., every record matches the current 
  9074. search arguments, this variable is nil. 
  9075.  
  9076.  
  9077. ΓòÉΓòÉΓòÉ 62.2. Methods ΓòÉΓòÉΓòÉ
  9078.  
  9079.  
  9080. ΓòÉΓòÉΓòÉ 62.2.1. init: ΓòÉΓòÉΓòÉ
  9081.  
  9082. -init: (char *) fileName
  9083.  
  9084. This initializer method -init: is used to set up all necessary data for the 
  9085. database. 
  9086.  
  9087. First, the file referenced by fileName is opened and the database header is 
  9088. read. Then the instance variables are initialized to the appropriate values. 
  9089. The field list is created and set up correctly. 
  9090.  
  9091. After calling this method, you can be sure that the database you want to access 
  9092. is ready-to-use. 
  9093.  
  9094.  
  9095. ΓòÉΓòÉΓòÉ 62.2.2. create: withFields: list: ΓòÉΓòÉΓòÉ
  9096.  
  9097. -create: (char *) fileName withFields: (int) countlist: (DBFIELD *) fields
  9098.  
  9099. The method previously described (-init:) can only be used to open an existing 
  9100. database file. When you want to create a new database file, you have to specify 
  9101. all necessary header information to write a new template database. 
  9102.  
  9103. fileName is the name of the database file, which shall be created. If this file 
  9104. already exists, it is overwritten. 
  9105.  
  9106. count specifies the number of fields the database shall contain. 
  9107.  
  9108. The information what fields shall be stored is passed in the fields parameter. 
  9109. fields is an array of structures of type DBFIELD. This type is defined in 
  9110. <db/dbtypes.h>. 
  9111.  
  9112. You must fill in the following fields 
  9113.  
  9114.      name ... must be a NULL-terminated string of uppercase letters (for 
  9115.       compatibility reasons) with at most 11 characters (including the 
  9116.       terminating NULL character). This is the name of the field. 
  9117.  
  9118.       Use toupper () to convert the name to uppercase letter. 
  9119.      type ... specifies the type of data stored in this field. This can be 
  9120.       DB_FLD_CHAR for character fields (strings), DB_FLD_NUM for numeric fields 
  9121.       (with and without decimals), DB_FLD_LOGIC for fields storing logic values 
  9122.       (boolean values), or DB_FLD_DATE for fields storing dates. 
  9123.  
  9124.       DB_FLD_MEMO should not be used because handling of memo fields is not 
  9125.       implemented now. 
  9126.      data_ptr ... is the pointer to the data for this field in the record 
  9127.       buffer. This is calculated at creation of the database. You must 
  9128.       initialize this variable to NULL. 
  9129.      length ... is the length of the field data in bytes. The datatype used 
  9130.       for this variable is unsigned char. 
  9131.  
  9132.       Remember to count all characters to be stored. When using numeric data 
  9133.       with decimals, length is decimals + 1 + number of digits before comma. 
  9134.  
  9135.       When using a date field, length must be 8. 
  9136.  
  9137.       Character data is stored without a terminating NULL character. 
  9138.  
  9139.  
  9140.      dec_point ... is an unsigned int designed to hold the number of decimals 
  9141.       for numeric fields. For all other field types this must be set to 0. 
  9142.  
  9143.  So creating a simple database with two fields, where the first is designed to 
  9144.  store a string with at most 10 characters and a numeric field with 5 digits 
  9145.  before and 2 after the comma would look like this: 
  9146.  
  9147.   .
  9148.   .
  9149.   DBFile *newDatabase = [DBFile alloc];
  9150.   DBFIELD fieldinfo[2];
  9151.  
  9152.   /* set information for first field */
  9153.   strcpy (fieldinfo[0].name, FIELD 1 );
  9154.   fieldinfo[0].type = DB_FLD_CHAR;
  9155.   fieldinfo[0].data_ptr = NULL;
  9156.   fieldinfo[0].length = 10;
  9157.   fieldinfo[0].dec_point = 0;
  9158.  
  9159.   /* set information for second field */
  9160.   strcpy (fieldinfo[1].name, FIELD 2 );
  9161.   fieldinfo[1].type = DB_FLD_NUM;
  9162.   fieldinfo[1].data_ptr = NULL;
  9163.   fieldinfo[1].length = 5 + 1 + 2;
  9164.   fieldinfo[1].dec_point = 2;
  9165.  
  9166.   [newDatabase create: newdb.dbf
  9167.   withFields: 2
  9168.   list: fieldinfo];
  9169.   [newDatabase free];
  9170.   .
  9171.   .
  9172.  
  9173.  Note the calculation of the field length for the second database field. The 
  9174.  total length is calculated by adding the number of digits before the comma 
  9175.  with 1 for the comma itself to the number of digits after the comma. 
  9176.  
  9177.  
  9178. ΓòÉΓòÉΓòÉ 62.2.3. free ΓòÉΓòÉΓòÉ
  9179.  
  9180. -free
  9181.  
  9182. Calling -free causes all memory allocated previously by this object to be freed 
  9183. again and closes the file. 
  9184.  
  9185. An eventually modified record in the record buffer is not saved automatically. 
  9186. By default, the information is discarded. 
  9187.  
  9188.  
  9189. ΓòÉΓòÉΓòÉ 62.2.4. field: ΓòÉΓòÉΓòÉ
  9190.  
  9191. -field: (int) fieldNumber
  9192.  
  9193. This method returns a pointer to the DBField object for field number 
  9194. fieldNumber. 
  9195.  
  9196. Enumeration starts at 0. 
  9197.  
  9198. If fieldNumber is out of range, nil is returned. 
  9199.  
  9200. Using the methods to search for a specific field as provided by the protocol 
  9201. DBEntities is preferred. This method is subject to change. 
  9202.  
  9203.  
  9204. ΓòÉΓòÉΓòÉ 62.2.5. fieldCount ΓòÉΓòÉΓòÉ
  9205.  
  9206. -(int) fieldCount
  9207.  
  9208. -fieldCount returns the total number of fields for the current database file. 
  9209.  
  9210. The field numbers are in a range of 0 to [database fieldCount] - 1. 
  9211.  
  9212.  
  9213. ΓòÉΓòÉΓòÉ 62.2.6. readRecord: ΓòÉΓòÉΓòÉ
  9214.  
  9215. -readRecord: (long) offset
  9216.  
  9217. Retrieve the record specified by offset into the record buffer. 
  9218.  
  9219. Enumeration of records starts at 0 and ends at [database recordCount]. 
  9220.  
  9221. Normally, this method should not be used by the application programmer. 
  9222.  
  9223.  
  9224. ΓòÉΓòÉΓòÉ 62.2.7. writeRecord: ΓòÉΓòÉΓòÉ
  9225.  
  9226. -writeRecord: (long) offset
  9227.  
  9228. Write the information in the internal record buffer to the database file. 
  9229.  
  9230. offset must be in a range of 0 to [database recordCount]. 
  9231.  
  9232. If offset is equal to [database recordCount], a new record is appended to the 
  9233. database file. 
  9234.  
  9235. Normally, this method should not be used by the application programmer. 
  9236.  
  9237.  
  9238. ΓòÉΓòÉΓòÉ 62.2.8. currentRecord ΓòÉΓòÉΓòÉ
  9239.  
  9240. -(long) currentRecord
  9241.  
  9242. This method returns the number of the record in the internal record buffer. 
  9243.  
  9244.  
  9245. ΓòÉΓòÉΓòÉ 62.2.9. deleted ΓòÉΓòÉΓòÉ
  9246.  
  9247. -(BOOL) deleted
  9248.  
  9249. if the current record is marked as deleted, YES is returned. Otherwise -deleted 
  9250. returns NO. 
  9251.  
  9252.  
  9253. ΓòÉΓòÉΓòÉ 62.2.10. append ΓòÉΓòÉΓòÉ
  9254.  
  9255. -append
  9256.  
  9257. Write the record in the internal record buffer to the database file. A new 
  9258. record is appended. 
  9259.  
  9260. This method is equal to using [database writeRecord: [database recordCount]]. 
  9261.  
  9262.  
  9263. ΓòÉΓòÉΓòÉ 62.2.11. replace ΓòÉΓòÉΓòÉ
  9264.  
  9265. -replace
  9266.  
  9267. Replace the current record in the database file with the data in the internal 
  9268. record buffer. 
  9269.  
  9270. This is equal to using [database writeRecord: [database currentRecord]]. 
  9271.  
  9272.  
  9273. ΓòÉΓòÉΓòÉ 62.2.12. delete ΓòÉΓòÉΓòÉ
  9274.  
  9275. -delete
  9276.  
  9277. Mark the current record as deleted. The information is not written to the 
  9278. database automatically. The changes are automatically saved to disk by calling 
  9279. -replace. 
  9280.  
  9281.  
  9282. ΓòÉΓòÉΓòÉ 62.2.13. undelete ΓòÉΓòÉΓòÉ
  9283.  
  9284. -undelete
  9285.  
  9286. Mark the current record as not deleted. The information is not written to the 
  9287. database automatically. The changes are automatically saved to disk using 
  9288. -replace. 
  9289.  
  9290.  
  9291. ΓòÉΓòÉΓòÉ 62.2.14. clear ΓòÉΓòÉΓòÉ
  9292.  
  9293. -clear
  9294.  
  9295. -clear clears the record buffer. All values are reset to their defaults. You 
  9296. should always call this method before setting up the record buffer to append a 
  9297. new record. 
  9298.  
  9299.  
  9300. ΓòÉΓòÉΓòÉ 62.2.15. findFirst ΓòÉΓòÉΓòÉ
  9301.  
  9302. -(BOOL) findFirst
  9303.  
  9304. To access all records in the database, you should use findFirst and findNext. 
  9305.  
  9306. -findFirst searches for the first not deleted record in the database matching 
  9307. the current search arguments and returns YES on success. 
  9308.  
  9309. If no active record could be found, NO is returned. 
  9310.  
  9311. Visiting all records in a database can be accomplished using the following 
  9312. piece of source code 
  9313.  
  9314. .
  9315. .
  9316. if ([database findFirst])
  9317. do {
  9318. .
  9319. . /* do modifications to records */
  9320. .
  9321. } while (![database findNext]);
  9322. .
  9323. .
  9324.  
  9325. Here, database is assumed to be a pointer to a successfully initialized DBFile 
  9326. object. 
  9327.  
  9328.  
  9329. ΓòÉΓòÉΓòÉ 62.2.16. findNext ΓòÉΓòÉΓòÉ
  9330.  
  9331. -(BOOL) findNext
  9332.  
  9333. -findNext searches for the next record in the database file which is not marked 
  9334. as deleted and matches the search arguments. 
  9335.  
  9336. The search must have been initially started using findFirst. 
  9337.  
  9338. Because at the moment indexing is not supported exhaustive searches can cause a 
  9339. severe delay in your application's response time. 
  9340.  
  9341.  
  9342. ΓòÉΓòÉΓòÉ 62.2.17. recordCount ΓòÉΓòÉΓòÉ
  9343.  
  9344. -(long) recordCount
  9345.  
  9346. -recordCount returns the number of records currently stored in the database 
  9347. file. 
  9348.  
  9349.  
  9350. ΓòÉΓòÉΓòÉ 62.2.18. setSearchArguments: ΓòÉΓòÉΓòÉ
  9351.  
  9352. -setSearchArguments: args
  9353.  
  9354. -setSearchArguments: is used to set the search arguments to args. The search 
  9355. arguments in effect up to now are removed and the first of them is returned by 
  9356. this method. 
  9357.  
  9358. To clear the search arguments, simply pass nil in the args parameter. 
  9359.  
  9360. Search arguments should be instances of DBSearchArg. 
  9361.  
  9362.  
  9363. ΓòÉΓòÉΓòÉ 62.2.19. searchArguments ΓòÉΓòÉΓòÉ
  9364.  
  9365. -searchArguments
  9366.  
  9367. -searchArguments will return a pointer to the first search argument currently 
  9368. in use with the database file. If no search arguments have been set previously, 
  9369. nil is returned. 
  9370.  
  9371.  
  9372. ΓòÉΓòÉΓòÉ 63. DBList ΓòÉΓòÉΓòÉ
  9373.  
  9374. Inherits from: SimpleList 
  9375.  
  9376. Class description: 
  9377.  
  9378. To provide access not only to single records in a database file and to avoid 
  9379. time-consuming fetching and storing before and after modifying a record, this 
  9380. class was created. 
  9381.  
  9382. DBList administers a list of records, which can be retrieved in the beginning, 
  9383. and then modification is only done in memory, till at the end of the program, 
  9384. all records are stored in the database again. 
  9385.  
  9386. As the class is derived from SimpleList access to the single records which are 
  9387. stored as Objective C objects is provided using the familiar methods (see 
  9388. Section sec:SimpleList on Page sec:SimpleList). 
  9389.  
  9390.  
  9391. ΓòÉΓòÉΓòÉ 63.1. Instance Variables ΓòÉΓòÉΓòÉ
  9392.  
  9393.  
  9394. ΓòÉΓòÉΓòÉ 63.1.1. DBFile *entity ΓòÉΓòÉΓòÉ
  9395.  
  9396. entity stores a pointer to the associated instance of a DBFile object. Before 
  9397. any operations to records, this association must be set up. 
  9398.  
  9399.  
  9400. ΓòÉΓòÉΓòÉ 63.2. Methods ΓòÉΓòÉΓòÉ
  9401.  
  9402.  
  9403. ΓòÉΓòÉΓòÉ 63.2.1. init ΓòÉΓòÉΓòÉ
  9404.  
  9405. -init
  9406.  
  9407. This method initializes an instance of DBList. No association with a database 
  9408. object is made. Before inserting or modifiying any records you must set up an 
  9409. association with -setEntity:. 
  9410.  
  9411.  
  9412. ΓòÉΓòÉΓòÉ 63.2.2. initForEntity: ΓòÉΓòÉΓòÉ
  9413.  
  9414. -initForEntity: (DBFile *) anEntity
  9415.  
  9416. This method initializes an instance of DBList to an existing and initialized 
  9417. instance of DBFile. 
  9418.  
  9419. This sets up an association of this object with the database object anEntity. 
  9420.  
  9421.  
  9422. ΓòÉΓòÉΓòÉ 63.2.3. fetchAllRecords: ΓòÉΓòÉΓòÉ
  9423.  
  9424. -fetchAllRecords: sender
  9425.  
  9426. Using the entity' s -findFirst and -findNext methods all active records are 
  9427. retrieved into this object. 
  9428.  
  9429. This method is an action method and can be directly bound to a command sent by 
  9430. a button or a menu item. 
  9431.  
  9432.  
  9433. ΓòÉΓòÉΓòÉ 63.2.4. fetchUsingQualifier: ΓòÉΓòÉΓòÉ
  9434.  
  9435. -fetchUsingQualifier: aQualifier
  9436.  
  9437. In addition to -fetchAllRecords: this method allows a so-called qualifier to be 
  9438. specified for the fetch. This qualifier is merely an instance of DBSearchArg 
  9439. used to filter the records and only fetch those matching the criteria as 
  9440. defined in the search arguments. 
  9441.  
  9442. This method is no action method! aQualifier is a pointer to an instance of 
  9443. DBSearchArg which should be the first search argument to use. 
  9444.  
  9445.  
  9446. ΓòÉΓòÉΓòÉ 63.2.5. setEntity: ΓòÉΓòÉΓòÉ
  9447.  
  9448. -setEntity: (DBFile *) anEntity
  9449.  
  9450. Associate the database object anEntity with the record list. 
  9451.  
  9452.  
  9453. ΓòÉΓòÉΓòÉ 63.2.6. entity ΓòÉΓòÉΓòÉ
  9454.  
  9455. -(DBFile *) entity
  9456.  
  9457. This returns the associated instance of DBFile. 
  9458.  
  9459.  
  9460. ΓòÉΓòÉΓòÉ 64. DBMemoField ΓòÉΓòÉΓòÉ
  9461.  
  9462. Inherits from: DBField : Object 
  9463.  
  9464. Class description: 
  9465.  
  9466. DBMemoField is a a special class for handling of fields storing multiple lines 
  9467. of text. 
  9468.  
  9469. Memo fields are currently not supported. 
  9470.  
  9471. At the moment, no additional functionality to its superclass DBField is 
  9472. provided. 
  9473.  
  9474.  
  9475. ΓòÉΓòÉΓòÉ 65. DBNumField ΓòÉΓòÉΓòÉ
  9476.  
  9477. Inherits from: DBField : Object 
  9478.  
  9479. Class description: 
  9480.  
  9481. DBNumField is a a special class for handling of fields storing numeric values. 
  9482.  
  9483. Methods for reading and writing numerical data in various formats are provided. 
  9484.  
  9485. The access methods themselves are a subset of the ones described in the 
  9486. protocol Value. Only the access functions used for numerical data are 
  9487. implemented. 
  9488.  
  9489.  
  9490. ΓòÉΓòÉΓòÉ 65.1. Methods ΓòÉΓòÉΓòÉ
  9491.  
  9492.  
  9493. ΓòÉΓòÉΓòÉ 65.1.1. intValue ΓòÉΓòÉΓòÉ
  9494.  
  9495. -(int) intValue
  9496.  
  9497. -intValue returns the value stored in the database field as an integer value. 
  9498.  
  9499. If the exact numeric representation is a floating point number, the value 
  9500. returned by this method will be rounded. 
  9501.  
  9502.  
  9503. ΓòÉΓòÉΓòÉ 65.1.2. floatValue ΓòÉΓòÉΓòÉ
  9504.  
  9505. -(float) floatValue
  9506.  
  9507. For field data represented as a floating point value, this method should be 
  9508. used for read-access. -floatValue will return a floating point number 
  9509. representing the instance data of the object. 
  9510.  
  9511. If you need a higher-precision floating point number, use -doubleValue and 
  9512. -setDoubleValue: for access to the database field. 
  9513.  
  9514.  
  9515. ΓòÉΓòÉΓòÉ 65.1.3. doubleValue ΓòÉΓòÉΓòÉ
  9516.  
  9517. -(double) doubleValue
  9518.  
  9519. Just as -floatValue, this method is used to query the instance data in a 
  9520. numeric representation. The return type of this method is double. 
  9521.  
  9522.  
  9523. ΓòÉΓòÉΓòÉ 65.1.4. setIntValue: ΓòÉΓòÉΓòÉ
  9524.  
  9525. -setIntValue: (int) aValue
  9526.  
  9527. To set the object's field data as an integer value, use -setIntValue:. aValue 
  9528. is an integer number representing the instance data to be. 
  9529.  
  9530.  
  9531. ΓòÉΓòÉΓòÉ 65.1.5. setFloatValue: ΓòÉΓòÉΓòÉ
  9532.  
  9533. -setFloatValue: (long) aValue
  9534.  
  9535. As opposed to -setStringValue: for setting the object's instance data as a 
  9536. string value on the one hand and to -setIntValue: and -setLongValue: using an 
  9537. integer representation this method is the write-counterpart to -floatValue. It 
  9538. is used to set the object's instance data to the floating point number aValue. 
  9539.  
  9540.  
  9541. ΓòÉΓòÉΓòÉ 65.1.6. setDoubleValue: ΓòÉΓòÉΓòÉ
  9542.  
  9543. -setDoubleValue: (double) aValue
  9544.  
  9545. To set the object's instance data as a double precision floating point number, 
  9546. use the classes' instance method -setDoubleValue:. aValue is a double precision 
  9547. floating point number representing the new value stored in the database field. 
  9548.  
  9549.  
  9550. ΓòÉΓòÉΓòÉ 66. DBRecord ΓòÉΓòÉΓòÉ
  9551.  
  9552. Inherits from: Object 
  9553.  
  9554. Class description: 
  9555.  
  9556. The previously decribed class DBList is used to store many records in memory at 
  9557. once. For every single record an instance of DBRecord is allocated and 
  9558. initialized. These objects are used as the the internal storage area of the 
  9559. records and to modify the data stored there. 
  9560.  
  9561. To simplify usage of a DBList object and the associated instances of DBRecord 
  9562. in a container object (detail's view) the methods -setFieldData: withString: 
  9563. and -fieldData: are provided. As a consequence of this, you can simply insert 
  9564. DBRecord objects into a Container object and the single fields will be 
  9565. displayed automatically in the container's detail's view. 
  9566.  
  9567.  
  9568. ΓòÉΓòÉΓòÉ 66.1. Instance Variables ΓòÉΓòÉΓòÉ
  9569.  
  9570.  
  9571. ΓòÉΓòÉΓòÉ 66.1.1. DBFile *entity ΓòÉΓòÉΓòÉ
  9572.  
  9573. This is a pointer to the associated instance of DBFile. 
  9574.  
  9575.  
  9576. ΓòÉΓòÉΓòÉ 66.1.2. longrecNo ΓòÉΓòÉΓòÉ
  9577.  
  9578. recNo stores the number of the record this object was created to store. 
  9579.  
  9580.  
  9581. ΓòÉΓòÉΓòÉ 66.1.3. idfieldList ΓòÉΓòÉΓòÉ
  9582.  
  9583. For every single record, the field list as defined for the instance of DBFile 
  9584. is copied to its private storage area. Access to the fields is performed using 
  9585. -field:. The data can be modified directly using the methods -setFieldData: 
  9586. withString: and -fieldData:. 
  9587.  
  9588.  
  9589. ΓòÉΓòÉΓòÉ 66.1.4. BOOLchanged ΓòÉΓòÉΓòÉ
  9590.  
  9591. This variable stores the change-state of the record. After retrieving, this 
  9592. variable holds the boolean value NO. Whenever the record is changed, this 
  9593. variable is set to YES. 
  9594.  
  9595. After saving the changes, changed is reset to NO. 
  9596.  
  9597.  
  9598. ΓòÉΓòÉΓòÉ 66.2. Methods ΓòÉΓòÉΓòÉ
  9599.  
  9600.  
  9601. ΓòÉΓòÉΓòÉ 66.2.1. initForEntity: ΓòÉΓòÉΓòÉ
  9602.  
  9603. -initForEntity: (DBFile *) anEntity
  9604.  
  9605. This method is used to initialize a newly created record object for the 
  9606. database file anEntity. 
  9607.  
  9608.  
  9609. ΓòÉΓòÉΓòÉ 66.2.2. free ΓòÉΓòÉΓòÉ
  9610.  
  9611. -free
  9612.  
  9613. -free frees the complete record list and all memory previously allocated by 
  9614. this object. 
  9615.  
  9616.  
  9617. ΓòÉΓòÉΓòÉ 66.2.3. replace ΓòÉΓòÉΓòÉ
  9618.  
  9619. -replace
  9620.  
  9621. This method copies the record buffer to the database object and replaces the 
  9622. record associated with this object on disk. 
  9623.  
  9624.  
  9625. ΓòÉΓòÉΓòÉ 66.2.4. setChanged: ΓòÉΓòÉΓòÉ
  9626.  
  9627. -setChanged: (BOOL) value
  9628.  
  9629. Using -setChanged: you can modify the value of the instance variable changed by 
  9630. hand. changed is set to value. 
  9631.  
  9632.  
  9633. ΓòÉΓòÉΓòÉ 66.2.5. changed ΓòÉΓòÉΓòÉ
  9634.  
  9635. -(BOOL) changed
  9636.  
  9637. The method -changed returns the value stored in the instance variable changed. 
  9638.  
  9639. Normally, YES is returned, if the record got modified, otherwise NO is 
  9640. returned. 
  9641.  
  9642.  
  9643. ΓòÉΓòÉΓòÉ 66.2.6. field: ΓòÉΓòÉΓòÉ
  9644.  
  9645. -field: (int) fieldNumber
  9646.  
  9647. This method will return a pointer to the instance of DBField or one of its 
  9648. subclasses associated with the database field fieldNumber. Reading and 
  9649. modifying the data stored in the field object can be done using the appropriate 
  9650. object's instance methods, e.g. -stringValue or -setStringValue:. 
  9651.  
  9652.  
  9653. ΓòÉΓòÉΓòÉ 66.2.7. fieldCount ΓòÉΓòÉΓòÉ
  9654.  
  9655. -(ing) fieldCount
  9656.  
  9657. -fieldCount returns the number of fields the record currently stores. 
  9658.  
  9659.  
  9660. ΓòÉΓòÉΓòÉ 66.2.8. recNo ΓòÉΓòÉΓòÉ
  9661.  
  9662. -(long) recNo
  9663.  
  9664. -recNo returns the number of the record in the database file, which is 
  9665. associated with this object. 
  9666.  
  9667.  
  9668. ΓòÉΓòÉΓòÉ 66.2.9. copyToDB ΓòÉΓòÉΓòÉ
  9669.  
  9670. -copyToDB
  9671.  
  9672. -copyToDB copies the record buffer of this object to the internal record buffer 
  9673. of the database object. 
  9674.  
  9675. The number of the record in the database file is not set. So don't try saving 
  9676. the data using [database replace]. 
  9677.  
  9678.  
  9679. ΓòÉΓòÉΓòÉ 66.2.10. copyFromDB ΓòÉΓòÉΓòÉ
  9680.  
  9681. -copyFromDB
  9682.  
  9683. -copyFromDB retrieves the data stored in the internal record buffer of the 
  9684. database object to the record buffer of this object. 
  9685.  
  9686.  
  9687. ΓòÉΓòÉΓòÉ 66.2.11. setfieldData: withString: ΓòÉΓòÉΓòÉ
  9688.  
  9689. -setFieldData: (unsigned long) field withString: (char*) aString
  9690.  
  9691. This method was only implemented for convenience reasons. It is automatically 
  9692. called when a DBRecord object in a container control gets modified by the user. 
  9693. You should normally not use the method by yourself. 
  9694.  
  9695. The field number is specified by field, aString is the new string value the 
  9696. field will be set to. 
  9697.  
  9698.  
  9699. ΓòÉΓòÉΓòÉ 66.2.12. fieldData: ΓòÉΓòÉΓòÉ
  9700.  
  9701. -(char *) fieldData: (unsigned long) field
  9702.  
  9703. This method was only implemented for convenience reasons. It is automatically 
  9704. called when a DBRecord object in a container control is displayed in detail's 
  9705. view. You should normally not use the method by yourself. 
  9706.  
  9707. field specified the field number. The string value of the record's field is 
  9708. returned. 
  9709.  
  9710.  
  9711. ΓòÉΓòÉΓòÉ 67. DBSearchArg ΓòÉΓòÉΓòÉ
  9712.  
  9713. Inherits from: 
  9714.  
  9715. Class description: 
  9716.  
  9717. DBFile itself as well as DBList do support fetching records matching some 
  9718. application-defined criteria. These criteria---or search arguments---are 
  9719. specified by using instances of the class DBSearchArg. 
  9720.  
  9721. Search arguments are organized in a linked list. The first search argument must 
  9722. be passed to the appropriate DBFile or DBList methods to be in effect. 
  9723.  
  9724. Freeing the first search argument will cause all other objects in the list to 
  9725. be freed, too. 
  9726.  
  9727. Single search arguments will always work on a single field of a record. This 
  9728. field is compared using an operator (see Table *) with an operand given as a 
  9729. NULL-terminated string. 
  9730.  
  9731. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9732. Γöé Operand            Γöé Description                            Γöé
  9733. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9734. ΓöéCMP_EQUAL           ΓöéThe comparison evaluates to true, if    Γöé
  9735. Γöé                    Γöéboth operands (the string value stored  Γöé
  9736. Γöé                    Γöéin the specified field of the record andΓöé
  9737. Γöé                    Γöéthe NULL-terminated string specified as Γöé
  9738. Γöé                    Γöéthe second operator) are equal.         Γöé
  9739. Γöé                    ΓöéOtherwise the comparison results in     Γöé
  9740. Γöé                    Γöéfalse                                   Γöé
  9741. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9742. ΓöéCMP_NOTEQUAL        Γöéfalse is returned if both operands are  Γöé
  9743. Γöé                    Γöéequal, true otherwise.                  Γöé
  9744. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9745. ΓöéCMP_LESS            ΓöéIf the first operand---the one stored inΓöé
  9746. Γöé                    Γöéthe database field---is                 Γöé
  9747. Γöé                    Γöé(lexicographically) less than the secondΓöé
  9748. Γöé                    Γöéoperand, the comparison results in true,Γöé
  9749. Γöé                    Γöéotherwise in false.                     Γöé
  9750. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9751. ΓöéCMP_GREATER         ΓöéIf the first operand---the one stored inΓöé
  9752. Γöé                    Γöéthe database field---is                 Γöé
  9753. Γöé                    Γöé(lexicographically) greater than the    Γöé
  9754. Γöé                    Γöésecond operand, the comparison results  Γöé
  9755. Γöé                    Γöéin true, otherwise in false.            Γöé
  9756. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9757. ΓöéCMP_LESSEQUAL       ΓöéIf the first operand---the one stored inΓöé
  9758. Γöé                    Γöéthe database field---is                 Γöé
  9759. Γöé                    Γöé(lexicographically) less than or equal  Γöé
  9760. Γöé                    Γöéto the second operand, the comparison   Γöé
  9761. Γöé                    Γöéresults in true, otherwise in false.    Γöé
  9762. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9763. ΓöéCMP_GREATEREQUAL    ΓöéIf the first operand---the one stored inΓöé
  9764. Γöé                    Γöéthe database field---is                 Γöé
  9765. Γöé                    Γöé(lexicographically) greater than or     Γöé
  9766. Γöé                    Γöéequals the second operand, the          Γöé
  9767. Γöé                    Γöécomparison results in true, otherwise inΓöé
  9768. Γöé                    Γöéfalse.                                  Γöé
  9769. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9770.  
  9771. Constants usable as operators for search arguments and a short description of 
  9772. each of them.
  9773.  
  9774. The constants shown in Table * are defined in <util/DBSearchArg.h>. 
  9775.  
  9776. The single search arguments in the list will form a single query determining if 
  9777. the current record matches the search criteria or if it does not. A record will 
  9778. only pass the comparison if it passes every single comparison. If only one 
  9779. search argument evalueates to false the whole comparison will evaluate to 
  9780. false. 
  9781.  
  9782.  
  9783. ΓòÉΓòÉΓòÉ 67.1. Methods ΓòÉΓòÉΓòÉ
  9784.  
  9785.  
  9786. ΓòÉΓòÉΓòÉ 67.1.1. initForField: operator: ΓòÉΓòÉΓòÉ
  9787.  
  9788. withOperand: 
  9789.  
  9790. -initForField: aField operator: (char) anOperatorwithOperand: (char *) anOperand
  9791.  
  9792. This initializer method initializes the search argument object. It is 
  9793. automatically assumed to be the last search argument in the linked list. 
  9794.  
  9795. aField is a pointer to a DBField object representing the first operand. This 
  9796. object must not be taken from a DBRecord object but from the entity instance 
  9797. DBFile itself. anOperator is one of the constants described in Table * defining 
  9798. the operator to be used for the comparison. anOperand is the second operand. It 
  9799. is a NULL-terminated string value which is automatically cut if it is longer 
  9800. than the maximum length a string value in the field specified by aField is 
  9801. allowed to be. 
  9802.  
  9803. To illustrate the use of search arguments together with a DBList a simple piece 
  9804. of source code will be shown: 
  9805.  
  9806. .
  9807. .
  9808. .
  9809. /*
  9810. * declare and initialize the variables
  9811. */
  9812. DBFile *dbfile = [[DBFile alloc] init: test.dbf ];
  9813. DBList *dblist = [[DBList alloc] initForEntity: dbfile];
  9814. id searchArg;
  9815. .
  9816. .
  9817. /*
  9818. * now initialize the search arguments.
  9819. * only the records having the string value r1 in field comment
  9820. * and having a value greater than or equal to P and less than
  9821. * Q in field name shall match the criteria.
  9822. */
  9823.  
  9824. /* first search argument: field comment == r1 */
  9825. searchArg = [[DBSearchArg alloc] initForField: [dbfile propertyNamed: comment ]
  9826. operator: CMP_EQUAL
  9827. withOperand: r1 ];
  9828.  
  9829. /* add second search argument: field name >= P to the list */
  9830. [searchArg add: [[DBSearchArg alloc] initForField: [dbfile propertyNamed: name ]
  9831. operator: CMP_GREATEREQUAL
  9832. withOperand: P ]];
  9833.  
  9834. /* add the third and last search argument: field name < Q to the list */
  9835. [searchArg add: [[DBSearchArg alloc] initForField: [dbfile propertyNamed: name ]
  9836. operator: CMP_LESS
  9837. withOperand: Q ]];
  9838.  
  9839. /*
  9840. * now fetch the records into the DBList instance
  9841. */
  9842. [dblist fetchUsingQualifier: searchArg];
  9843.  
  9844. /*
  9845. * and delete the search arguments
  9846. */
  9847. [searchArg free];
  9848. .
  9849. .
  9850. .
  9851.  
  9852. As the single search arguments are connected by a logical and, this query can 
  9853. be read as: 
  9854.  
  9855. Fetch all records from the database dbfile into the record list dblist where 
  9856. the value stored in the field "comment" equals "r1" and whose "name" field 
  9857. starts with the letter "P". 
  9858.  
  9859. As indexing is not supported at the moment, queries will always have to search 
  9860. the whole data file. This can be very time-consuming if your application will 
  9861. make queries to a large data file frequently. 
  9862.  
  9863.  
  9864. ΓòÉΓòÉΓòÉ 67.1.2. free ΓòÉΓòÉΓòÉ
  9865.  
  9866. -free
  9867.  
  9868. -free will free the whole list of search arguments starting with this object. 
  9869.  
  9870.  
  9871. ΓòÉΓòÉΓòÉ 67.1.3. add: ΓòÉΓòÉΓòÉ
  9872.  
  9873. -add: anArg
  9874.  
  9875. This method adds anArg to the end of the list of search arguments starting with 
  9876. this object. 
  9877.  
  9878.  
  9879. ΓòÉΓòÉΓòÉ 67.1.4. next ΓòÉΓòÉΓòÉ
  9880.  
  9881. -next
  9882.  
  9883. -next returns the next search argument in the list. If this one is the last 
  9884. argument, nil is returned. 
  9885.  
  9886.  
  9887. ΓòÉΓòÉΓòÉ 67.1.5. field ΓòÉΓòÉΓòÉ
  9888.  
  9889. -field
  9890.  
  9891. Using -field a pointer to the field object representing the first operator of 
  9892. the search argument is returned. 
  9893.  
  9894.  
  9895. ΓòÉΓòÉΓòÉ 67.1.6. operator ΓòÉΓòÉΓòÉ
  9896.  
  9897. -(char) operator
  9898.  
  9899. This method returns the operator used for the search argument. 
  9900.  
  9901.  
  9902. ΓòÉΓòÉΓòÉ 67.1.7. operand ΓòÉΓòÉΓòÉ
  9903.  
  9904. -(char *) operand
  9905.  
  9906. -operand returns the second operand of the search argument. 
  9907.  
  9908.  
  9909. ΓòÉΓòÉΓòÉ 67.1.8. matchesCurrentRecordInFile: ΓòÉΓòÉΓòÉ
  9910.  
  9911. -(BOOL) matchesCurrentRecordInFile:aFile
  9912.  
  9913. This method is called by the DBFile or DBList instance used for fetching the 
  9914. records for every single record. It has to check the current record and returns 
  9915. YES if it matches the search arguments or NO if it does not do so. 
  9916.  
  9917.  
  9918. ΓòÉΓòÉΓòÉ 68. Database Library---Protocols ΓòÉΓòÉΓòÉ
  9919.  
  9920. This chapter describes all protocols available in the Database library. These 
  9921. descriptions consist of two parts, 
  9922.  
  9923.    1. The name of the protocol and a list of all classes which adopt it 
  9924.    2. A list of all methods declared and a short description of these 
  9925.  
  9926.  
  9927. ΓòÉΓòÉΓòÉ 69. DBEntities ΓòÉΓòÉΓòÉ
  9928.  
  9929. Adopted by DBFile 
  9930.  
  9931. Protocol description: 
  9932.  
  9933. The DBEntities protocol defines various methods useful with all classes 
  9934. directly providing access to a database file or a table in a database. 
  9935.  
  9936. At the moment only DBFile adopts this protocol, in future versions I plan to 
  9937. support various database systems, e.g. SQL servers, for database access. Then 
  9938. some more classes will be provided conforming to this protocol and providing 
  9939. the same consistent interface to your application program. 
  9940.  
  9941.  
  9942. ΓòÉΓòÉΓòÉ 69.1. Methods ΓòÉΓòÉΓòÉ
  9943.  
  9944.  
  9945. ΓòÉΓòÉΓòÉ 69.1.1. database ΓòÉΓòÉΓòÉ
  9946.  
  9947. -database
  9948.  
  9949. In case the entity object does represent a single table or relation from a 
  9950. database, this method will return a pointer to the database object managing the 
  9951. entity. 
  9952.  
  9953. In case there is no database class managing access to the table this method 
  9954. just returns nil. 
  9955.  
  9956.  
  9957. ΓòÉΓòÉΓòÉ 69.1.2. getProperties: ΓòÉΓòÉΓòÉ
  9958.  
  9959. -getProperties: (SimpleList *) aList
  9960.  
  9961. -getProperties: will fill the list object aList with all property objects the 
  9962. entity consists of. In case of DBFile, these property objects will be instances 
  9963. of DBField or one of its subclasses. 
  9964.  
  9965.  
  9966. ΓòÉΓòÉΓòÉ 69.1.3. matchesEntity: ΓòÉΓòÉΓòÉ
  9967.  
  9968. -(BOOL) matchesEntity: (id <DBEntities>)anEntity
  9969.  
  9970. The instance method -matchesEntity: will check if the entity object manages the 
  9971. same data (database file, table or relation) than anEntity. In case this is 
  9972. true, YES is returned, NO otherwise. 
  9973.  
  9974.  
  9975. ΓòÉΓòÉΓòÉ 69.1.4. entityName ΓòÉΓòÉΓòÉ
  9976.  
  9977. -(const char *) entityName
  9978.  
  9979. -entityName returns the name of the entity as a NULL-terminated string. You are 
  9980. not allowed to modify the string you receive by calling this method. 
  9981.  
  9982.  
  9983. ΓòÉΓòÉΓòÉ 69.1.5. propertyNamed: ΓòÉΓòÉΓòÉ
  9984.  
  9985. -propertyNamed: (const char *) aName
  9986.  
  9987. The method -propertyNamed: will search for a property having the name aName in 
  9988. the list of properties the entity manages. The property object will be returned 
  9989. in case it was found, nil otherwise. 
  9990.  
  9991. Depending on the entity object aName is a case-sensitive or case-insensitive 
  9992. NULL-terminated string. For DBFile objects, the names of the properties are 
  9993. treated all as upper-case letters. 
  9994.  
  9995. For compatibility reasons, you should use this method to retrieve a pointer to 
  9996. a specific database field instead of the -field: method of DBFile. 
  9997.  
  9998.  
  9999. ΓòÉΓòÉΓòÉ 70. DBProperties ΓòÉΓòÉΓòÉ
  10000.  
  10001. Adopted by DBField 
  10002.  
  10003. Protocol description: 
  10004.  
  10005. To provide a general interface for every property object (e.g. instances of the 
  10006. class DBField) the DBProperties protocol was defined. 
  10007.  
  10008. In this version of the database library many of the methods will just return 
  10009. default values. These methods are: 
  10010.  
  10011.      -isKey will always return NO. 
  10012.      -isReadOnly will always return NO. 
  10013.      -isSingular will always return YES. 
  10014.      -propertyType will return nil. 
  10015.      -setName: will not change the name of the property at the moment and 
  10016.       always return NO. 
  10017.  
  10018.  The protocol and the methods were designed for use with some more complex 
  10019.  classes for managing databases as will provided in one of the next versions of 
  10020.  this library package. 
  10021.  
  10022.  
  10023. ΓòÉΓòÉΓòÉ 70.1. Methods ΓòÉΓòÉΓòÉ
  10024.  
  10025.  
  10026. ΓòÉΓòÉΓòÉ 70.1.1. entity ΓòÉΓòÉΓòÉ
  10027.  
  10028. -(id <DBEntities> entity
  10029.  
  10030. -entity returns the entity object associated with the property object. 
  10031.  
  10032.  
  10033. ΓòÉΓòÉΓòÉ 70.1.2. isKey ΓòÉΓòÉΓòÉ
  10034.  
  10035. -(BOOL) isKey
  10036.  
  10037. If the property is a key property or part of a key property, this method will 
  10038. return YES. Otherwsie NO is returned. 
  10039.  
  10040.  
  10041. ΓòÉΓòÉΓòÉ 70.1.3. isReadOnly ΓòÉΓòÉΓòÉ
  10042.  
  10043. -(BOOL) isReadOnly
  10044.  
  10045. Some properties will be of a read-only type. In this case, -isReadOnly will 
  10046. return YES, NO otherwise. 
  10047.  
  10048.  
  10049. ΓòÉΓòÉΓòÉ 70.1.4. isSingular ΓòÉΓòÉΓòÉ
  10050.  
  10051. -(BOOL) isSingular
  10052.  
  10053. If the property object represents a single field in a database file or 
  10054. table/relation, this method will return YES. In case the property is a compound 
  10055. property, i.e., its contents are computed from some other fields in the entity, 
  10056. NO is returned. 
  10057.  
  10058.  
  10059. ΓòÉΓòÉΓòÉ 70.1.5. matchesProperty: ΓòÉΓòÉΓòÉ
  10060.  
  10061. -(BOOL) matchesProperty: (id <DBProperties>)aProperty
  10062.  
  10063. The instance method -matchesProperty: will check, if aProperty and the property 
  10064. object itself do manage the same database field or column in a database table 
  10065. or relation. If this is the case, YES is returned, otherwise this method 
  10066. results in NO. 
  10067.  
  10068.  
  10069. ΓòÉΓòÉΓòÉ 70.1.6. propertyName ΓòÉΓòÉΓòÉ
  10070.  
  10071. -(const char *) propertyName
  10072.  
  10073. -propertyName returns the name of the property as a constant NULL-terminated 
  10074. string. Depending on the implementation of the used database engine (server or 
  10075. library class) the name is converted to lower-case or upper-case letters only. 
  10076.  
  10077.  
  10078. ΓòÉΓòÉΓòÉ 70.1.7. propertyType ΓòÉΓòÉΓòÉ
  10079.  
  10080. -propertyType
  10081.  
  10082. This method is reserved to check the type of a property. At the moment this 
  10083. method is not implemented in any of the classes adopting this protocol. It will 
  10084. always return nil by now. 
  10085.  
  10086.  
  10087. ΓòÉΓòÉΓòÉ 70.1.8. setName: ΓòÉΓòÉΓòÉ
  10088.  
  10089. -(BOOL) setName: (const char *) aName
  10090.  
  10091. To eventually change the name of the property, you can use this method. It will 
  10092. set the name of the property to aName if this is possible and will return a 
  10093. boolean value determining if the name could be changed or not. 
  10094.  
  10095. In case of using the internal library classes DBFile and DBField for access to 
  10096. a database, changing a property's name is not possible and this method will 
  10097. always return NO. 
  10098.  
  10099.  
  10100. ΓòÉΓòÉΓòÉ 71. Bibliography ΓòÉΓòÉΓòÉ
  10101.  
  10102. *Introduction to PM Programming. Salomon, Larry Jr. Article series starting in 
  10103. EDM/2 Vol. 1, issue 7. 
  10104.  
  10105. *OS/2 Version 2.0, Volume 4: Application Development. IBM International 
  10106. Technical Support Center, Boca Raton. IBM Document Number GG24-3774-00. 
  10107.  
  10108. *Programming the Container Control. Salomon, Larry Jr. Article series in EDM/2 
  10109. Vol. 1, issues 3--5. 
  10110.  
  10111.  
  10112. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  10113.  
  10114. The selector of a method can be queried via  @selector (...)